{"id":4922,"date":"2025-03-17T16:44:15","date_gmt":"2025-03-17T15:44:15","guid":{"rendered":"https:\/\/neogeo.fr\/your-onegeo-chat-chatbot-a-technical-breakdown\/"},"modified":"2026-10-23T16:25:37","modified_gmt":"2026-10-23T14:25:37","slug":"your-onegeo-chat-chatbot-a-technical-breakdown","status":"publish","type":"post","link":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/","title":{"rendered":"Your OneGeo Chat chatbot: a technical breakdown"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Chatbots are everywhere, but <strong><em>OneGeo Chat<\/em><\/strong> is not limited to generic answers: it leverages <strong>your<\/strong> datasets! Thanks to the <em><strong>RAG<\/strong><\/em> (<em>Retrieval Augmented Generation<\/em>) architecture, it queries and cross-references available information to provide accurate and contextualized answers tailored to your field. <\/p>\n\n<p class=\"wp-block-paragraph\">\ud83d\udd0d This article is for those who want to go further and discover what happens behind the scenes: architecture, technological choices, infrastructure&#8230; We&#8217;re taking you backstage for the development of <em>OneGeo Chat<\/em>! \ud83d\ude80<\/p>\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"NEOGEO - L&amp;apos;agent conversationnel OneGeo Chat\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/nNmYcs75GYM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n<h2 class=\"wp-block-heading\"><strong>A chatbot, but not just any chatbot!<\/strong><\/h2>\n\n<h3 class=\"wp-block-heading\"><strong>\ud83e\uddd1\u200d\ud83d\udcbb Behind the screen: the team at the helm<\/strong><\/h3>\n\n<p class=\"wp-block-paragraph\">Behind <em>OneGeo Chat<\/em>, it&#8217;s us, the <strong>Innovation<\/strong> service team from <em>Neogeo<\/em> Toulouse, who are at the helm: <em>S\u00e9bastien Da Rocha<\/em> and <em>Mathilde Pommier<\/em>. Passionate about advances in natural language processing (<em><strong>NLP<\/strong><\/em>), we have drawn on the latest research to design a chatbot that is both high-performing and truly useful. Rather than developing a generic assistant, we wanted to create a tool capable of leveraging your datasets to provide accurate <strong>answers<\/strong> <strong>tailored to your business context<\/strong>.  <\/p>\n\n<h3 class=\"wp-block-heading\"><strong>\ud83c\udfaf Why OneGeo Chat?<\/strong><\/h3>\n\n<p class=\"wp-block-paragraph\">The idea for <em>OneGeo Chat<\/em> was born from observing certain recurring challenges encountered by our users in how they search for datasets. We already have <em><strong>OneGeo Explorer<\/strong><\/em>, a powerful tool for <em><strong>full-text search<\/strong><\/em>. The latter has a limitation: if the user does not know the exact terms present in the datasets they are looking for, they might not find them. This observation revealed a need: for a <strong>more flexible search<\/strong>, adapted to users who do not always know how to formulate their query.   <\/p>\n\n<p class=\"wp-block-paragraph\">Another need we identified is the ability to <strong>query<\/strong> datasets on vast and complex topics. When users start searching for information, they don&#8217;t always have a clear idea of all aspects of the subject they are exploring. There is often a lack of dynamic interaction that would allow for <strong>deeper research<\/strong> as they go, asking specific questions and obtaining <strong>contextualized answers<\/strong>. That&#8217;s why we chose the <strong>chatbot<\/strong> format: to offer a fluid exchange, like a conversation, to guide the user in their search.   <\/p>\n\n<p class=\"wp-block-paragraph\">Finally, another important point is that users often perform similar searches or try to find information they have already consulted. The chatbot therefore makes it possible to <strong>keep track of searches<\/strong> by saving them in different conversations. This allows for faster classification and retrieval of relevant data, thus facilitating future exchanges.  <\/p>\n\n<p class=\"wp-block-paragraph\">It is in response to these needs that <em>OneGeo Chat<\/em> was born: a solution that not only allows for <strong>querying<\/strong> datasets in a more natural way, but also <strong>keeping track<\/strong> of searches and facilitating exploration even for the most complex subjects.<\/p>\n\n<h3 class=\"wp-block-heading\">\ud83d\udd0c Seamless integration<\/h3>\n\n<p class=\"wp-block-paragraph\">From the design phase, <em>OneGeo Chat<\/em> was designed to <strong>integrate<\/strong> smoothly into the <strong>OneGeo Suite <em>platform<\/em><\/strong>, in order to offer a unified experience to users. Just like <em>OneGeo Explorer<\/em>, the goal was to create a single entry point where users can manage, search, and visualize their datasets without having to juggle multiple tools. This integration allows for <strong>centralizing<\/strong> data access while optimizing the fluidity of the user experience.  <\/p>\n\n<p class=\"wp-block-paragraph\">However, we also took the need for flexibility into account. Thus, <em>OneGeo Chat<\/em> was designed to work as a <em><strong>stand-alone<\/strong><\/em> solution, completely autonomously, for users with more modest or specific needs. This modularity of the solution, both in terms of integration into a larger environment or independent deployment, allows <em>OneGeo Chat<\/em> to adapt to different configurations and meet a wide variety of use cases.  <\/p>\n\n<h2 class=\"wp-block-heading\">Behind the scenes of the code<\/h2>\n\n<p class=\"wp-block-paragraph\">This is where it gets serious! \ud83d\ude80 We are now diving into the <strong>technical<\/strong> heart and the choices that shaped <em>OneGeo Chat<\/em>. Get ready to discover how this project was designed, the technologies used, and the infrastructure that allows this chatbot to run smoothly.  <\/p>\n\n<h3 class=\"wp-block-heading\">\ud83c\udfd7 The project foundations<\/h3>\n\n<h4 class=\"wp-block-heading\">The RAG (Retrieval Augmented Generation) principle<\/h4>\n\n<p class=\"wp-block-paragraph\">At the heart of <em>OneGeo Chat<\/em> is a powerful architecture that combines two technologies: <strong>AI text generation<\/strong> and <strong>business information retrieval<\/strong>. This model, called <em><strong>RAG<\/strong><\/em>, allows our chatbot to go beyond simple response generation. Rather than relying solely on internal knowledge, it queries a vector database containing <strong>your<\/strong> datasets to look for relevant information, then generates a response based on that data.  <\/p>\n\n<p class=\"wp-block-paragraph\">The process takes place in two main stages: first, the <strong>harvesting<\/strong> (<em><strong>harvest<\/strong><\/em>) of different data sources to fill a vector database that will be used by the model during its use (inference). Then, the <strong>inference<\/strong> stage where the user asks the chatbot a question and the application responds using an AI model. <\/p>\n\n<p class=\"wp-block-paragraph\">This second stage is itself divided into two, with first the phase of retrieving relevant data for the user&#8217;s question (the <em><strong>retrieval<\/strong><\/em>). Here, the chatbot consults the vector database previously filled in the <em><strong>harvest<\/strong><\/em> stage to retrieve documents related to the question asked. <\/p>\n\n<p class=\"wp-block-paragraph\">Rather than searching for an exact match (<em>full-text<\/em>, as in <em>OneGeo Explorer<\/em>), the model is based on the <strong>vector proximity<\/strong> of terms. In other words, it evaluates the <strong>semantic similarity<\/strong> between the user&#8217;s question and the stored documents, which allows it to identify relevant answers even if the exact terms are not present in the datasets. This therefore involves vectorizing both the documents in the database and the user&#8217;s question with one and the same semantic model.  <\/p>\n\n<p class=\"wp-block-paragraph\">Once the relevant documents are retrieved, they form what is called a <strong>context<\/strong> that will feed an <em><strong>LLM<\/strong><\/em> (<em>Large Language Model<\/em>: generative AI model). In short, this context provides a basis for the AI and guides it in the right direction to <strong>generate<\/strong> an accurate response to the user&#8217;s question. Thus, the technique used is the same as the one you use when you detail your request in other chatbots.  <\/p>\n\n<p class=\"wp-block-paragraph\">This is how the <em>RAG<\/em> model concludes, allowing the AI model to generate responses based on the user&#8217;s datasets. A classic RAG ends here, but we will see later that ours includes an additional step. \ud83d\udd0d<\/p>\n\n<h4 class=\"wp-block-heading\">The OneGeo Chat RAG<\/h4>\n\n<p class=\"wp-block-paragraph\">Now that the general principle of <em>RAG<\/em> is clear, let&#8217;s move on to the specifics of its implementation in <em>OneGeo Chat<\/em>. Our approach goes further than a simple classic <em>Retrieval Augmented Generation<\/em> by integrating advanced mechanisms to optimize the retrieval and use of information. <\/p>\n\n<p class=\"wp-block-paragraph\">During the harvesting phase, our <strong>vector database<\/strong> is enriched with datasets from the <em>OneGeo Suite<\/em> platform. The latter <strong>pushes<\/strong> its published and harvested metadata into the <em>OneGeo Chat<\/em> vector database. Of course, only data accessible anonymously is available. The vector database can also (though it is not mandatory) be fed by <strong>pulling<\/strong> data from our project management application: <em>Redmine<\/em>. In the future, other data sources will be added, and you will also be able to add <strong>your own<\/strong>. Thus, these two mechanisms (<em>push<\/em> and <em>pull<\/em>) fill the <em>OneGeo Chat<\/em> vector database with your data.     <\/p>\n\n<p class=\"wp-block-paragraph\">More concretely, semantic search is only feasible and effective on small chunks of text of a few hundred characters. As a result, documents are not kept as they are in the <em>OneGeo Chat<\/em> vector database. They are therefore <strong>split into sentences<\/strong> before these are indexed using this vector representation. Of course, each sentence is recorded with a link to its original document so that we can trace back to the latter.   <\/p>\n\n<p class=\"wp-block-paragraph\">Furthermore, <em>OneGeo Chat<\/em> is not limited to retrieving the most relevant documents from a vector database; indeed, it adopts a more comprehensive and modular approach. We have implemented a <strong>chaining of <em>retrievers<\/em><\/strong>, allowing for the aggregation of several types of information to form the context to be sent to the generative model: <\/p>\n\n<ul class=\"wp-block-list\">\n<li>A hard-coded pre-instruction: even before searching for documents, the chatbot retrieves a set of directives defining its behavior (response language, citation of sources, etc.).<\/li>\n\n\n\n<li>Conversation history: to ensure real continuity in the exchange, the chatbot takes into account previous messages from the current conversation.<\/li>\n\n\n\n<li>The most relevant document titles: to refine the search, we use an initial filter based on the titles of the documents closest to the user&#8217;s query. This effectively guides the retrieval process. <\/li>\n\n\n\n<li>The most relevant documents in the vector database: once these steps are completed, the chatbot queries the vector database to retrieve the documents most in line with the question asked. We only retrieve data that is relevant from a semantic point of view: the title, description, and other metadata (but not dates, for example). <\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">Thanks to this <strong>modular architecture<\/strong>, it is possible to add, orchestrate, or remove retrievers at any time, thus offering great flexibility for testing and selecting different retrieval and generation <strong>algorithms<\/strong>.<\/p>\n\n<p class=\"wp-block-paragraph\">Finally, <em>OneGeo Chat<\/em> has one last peculiarity added to the classic <em>RAG<\/em>: an additional block called <em><strong>Document Searcher<\/strong><\/em>. This module intervenes once the response has been generated by the <em>LLM<\/em> and focuses on the document search use case. To do this, this module takes the <strong>initial question<\/strong> and the <strong>generated<\/strong> response as input. It performs <strong>semantic searches<\/strong> in the vector database on this input data. At the end of this process, the five most relevant documents are selected and presented to the user, accompanied by a link, a description, and its score.    <\/p>\n\n<p class=\"wp-block-paragraph\">Thus, the <em>OneGeo Chat<\/em> chatbot allows you to directly access the most relevant datasets related to your initial question.<\/p>\n\n<p class=\"wp-block-paragraph\">You will find all the modules composing <em>OneGeo Chat<\/em> in the following diagram.<\/p>\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"787\" src=\"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/Architecture_Onegeo_Chat-1024x787.webp\" alt=\"\" class=\"wp-image-1454\" srcset=\"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/Architecture_Onegeo_Chat-1024x787.webp 1024w, https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/Architecture_Onegeo_Chat-300x231.webp 300w, https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/Architecture_Onegeo_Chat-768x590.webp 768w, https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/Architecture_Onegeo_Chat.webp 1051w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n<h3 class=\"wp-block-heading\">\ud83d\udee0 A clever mix of open-source technologies at the heart of OneGeo Chat<\/h3>\n\n<p class=\"wp-block-paragraph\"><em>OneGeo Chat<\/em> relies on several technologies that ensure its proper functioning, both on the artificial intelligence side and on the backend, frontend, and validation aspects.<\/p>\n\n<p class=\"wp-block-paragraph\">For the <em>AI<\/em> part, two models are used: <em><strong>Llama 3.1:8b<\/strong><\/em> for the <em><strong>LLM<\/strong><\/em> generation of responses and <em><strong>paraphrase-multilingual-MiniLM-L12-v2<\/strong><\/em> for <strong>semantic<\/strong> search. You have already seen these models in the previous diagram. We selected these models not only for their performance but also for their <strong>small size<\/strong>, which facilitates their execution (response time). Furthermore, they are available via <em><strong>Ollama<\/strong><\/em>, a solution that simplifies the management, use, and interchangeability of models.   <\/p>\n\n<p class=\"wp-block-paragraph\">The backend is developed in <em><strong>Python<\/strong><\/em> and with the <em><strong>Django<\/strong><\/em> framework. As for the vector database, we chose <strong><em>QDrant<\/em><\/strong>, which makes it easy to perform semantic searches. This vector database is also lightweight and easily deployable. To manage real-time communication, we use <em><strong>Django Channels<\/strong><\/em>, which allows for easy integration of <em><strong>WebSockets<\/strong><\/em> into <em>Django<\/em>. This technology allows us to easily manage conversations.     Furthermore, <em><strong>Django REST Framework<\/strong><\/em> (<strong>DRF<\/strong>) facilitates interaction with the database and exchanges between the <em>frontend<\/em> and the <em>backend<\/em>.<\/p>\n\n<p class=\"wp-block-paragraph\">On the frontend side, the interface is built with <em><strong>VueJS 3<\/strong><\/em> and <em><strong>TypeScript<\/strong><\/em>. We opted for <em><strong>TypeScript<\/strong><\/em> rather than <em>JavaScript<\/em> to benefit from its typing rules, which helps limit bugs, improve code clarity, and facilitate long-term maintenance. <\/p>\n\n<p class=\"wp-block-paragraph\">Also, at the <em>Neogeo<\/em> innovation service, we attach great importance to the quality and reliability of our developments. To guarantee <strong>robust<\/strong> code and maintain a high level of <strong>testing<\/strong> and <strong>validation<\/strong>, we have implemented a <em><strong>CI<\/strong><\/em> (<em>Continuous Integration<\/em>) in the GitLab of the <em>OneGeo Chat<\/em> project. <\/p>\n\n<p class=\"wp-block-paragraph\">In particular, we use <em><strong>MyPy<\/strong><\/em> for <strong>static analysis<\/strong> of the <em>Python<\/em> backend code, which allows us to detect <strong>typing<\/strong> inconsistencies even before the program is executed. For <strong>code quality<\/strong> monitoring, <em><strong>SonarQube<\/strong><\/em> analyzes our code in depth to detect potential <em>bugs<\/em> and <em>code smells<\/em>, and to evaluate our code <strong>coverage<\/strong>. As for the tests themselves, <em><strong>Pytest<\/strong><\/em> is our main tool for executing unit and integration tests on the backend.   On the frontend side, we have some <em><strong>Cypress<\/strong><\/em> tests, but these remain basic and are not integrated into the <em>CI<\/em>, though they can be executed manually.<\/p>\n\n<p class=\"wp-block-paragraph\">Also, we have the <em><strong>Pip-audit<\/strong><\/em> tool which helps us identify security vulnerabilities in <strong>Python<\/strong> <em>dependencies<\/em> and ensure that our application relies on up-to-date and secure libraries. Finally, since <em>OneGeo Chat<\/em> is <strong>open-source<\/strong>, we use <em><strong>Pylic<\/strong><\/em> to verify that all the libraries and APIs we integrate comply with the appropriate licenses. <\/p>\n\n<p class=\"wp-block-paragraph\"><em>If you would like to learn more about license compatibility, I invite you to consult our <a href=\"https:\/\/neogeo.fr\/en\/is-your-application-compatible-with-the-affero-gpl-3-0-licence\/\">article on the Affero GPL 3.0 license<\/a><\/em><\/p>\n\n<p class=\"wp-block-paragraph\">Finally, deployment is managed via <em><strong>Docker<\/strong><\/em>, which not only allows for an <strong>isolated<\/strong> and <strong>reproducible<\/strong> environment, but also simplifies dependency management and ensures that <em>OneGeo Chat<\/em> works consistently, regardless of the environment. Also, <em>Docker<\/em> greatly simplifies the deployment and execution of <strong>dependencies<\/strong>. In summary, <em>Docker<\/em> makes the <em>OneGeo Chat<\/em> deployment process fast, reliable, and easy to maintain, which is why we adopted it.  <\/p>\n\n<h3 class=\"wp-block-heading\">\ud83c\udf0d An infrastructure that holds up<\/h3>\n\n<p class=\"wp-block-paragraph\"><em>OneGeo Chat<\/em> was designed to run on both <strong>GPU<\/strong> and <strong>CPU<\/strong>, offering flexibility depending on available resources. However, in practice, <strong>performance<\/strong> on <strong>GPU<\/strong> is significantly <strong>superior<\/strong>: generation times are much faster and the user experience is greatly improved. <\/p>\n\n<p class=\"wp-block-paragraph\">The <strong>CPU<\/strong> mode remains an <strong>alternative<\/strong>, but it requires a <strong>significant amount<\/strong> of <em><strong>RAM<\/strong><\/em> and results in significantly longer response times. That is why we strongly recommend using a GPU to take full advantage of the application. <\/p>\n\n<p class=\"wp-block-paragraph\">To facilitate adapting the deployment to your infrastructure, the <em>docker-compose.yml<\/em> file includes specific sections for GPUs. By default, the configuration uses the CPU for better compatibility, but you can <strong>enable<\/strong> GPU support by uncommenting the corresponding parts. This allows you to leverage your hardware&#8217;s capabilities while maintaining a single, easy-to-manage configuration. To use GPU mode, you will need an Nvidia GPU with at least <strong>8GB<\/strong> of <strong>RAM<\/strong> and have the <em><a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/latest\/install-guide.html\">Nvidia Container Toolkit<\/a><\/em> installed. We have not tested with an AMD GPU, although it is theoretically possible. Once again, using containers with <em>Docker<\/em> greatly simplifies the deployment of OneGeo Chat.     <\/p>\n\n<p class=\"wp-block-paragraph\">Furthermore, to <strong>test locally<\/strong> <em>OneGeo Chat<\/em>, follow the detailed instructions in the <em><strong>Run Locally<\/strong><\/em> section of the project&#8217;s <em><strong><a href=\"https:\/\/git.neogeo.fr\/ia\/onegeo_chat\">README<\/a><\/strong><\/em>. You will find all the steps to configure and run the application locally. <\/p>\n\n<h2 class=\"wp-block-heading\">A final word<\/h2>\n\n<p class=\"wp-block-paragraph\">In conclusion, if you are looking for a <strong>simple<\/strong> and <strong>fast<\/strong> way to <strong>search<\/strong> and <strong>exchange<\/strong> effectively around your <strong>data<\/strong>, geomatic or otherwise, then <em>OneGeo Chat<\/em> is for you. As this project is still evolving, we wish to bring improvements and new <em>features<\/em> to it. <\/p>\n\n<p class=\"wp-block-paragraph\">In particular, we want to <strong>strengthen<\/strong> <strong>validation<\/strong> by adding more <strong>functional tests<\/strong> with <em><strong>Cypress<\/strong><\/em> and by integrating <em><strong><a href=\"https:\/\/docs.ragas.io\/en\/stable\/\">Ragas<\/a><\/strong><\/em> to <strong>evaluate<\/strong> the relevance of the <strong>model<\/strong>. <em>Ragas<\/em> is a library that provides tools to improve the evaluation of <em>LLM<\/em> applications.<\/p>\n\n<p class=\"wp-block-paragraph\">The <strong>optimization<\/strong> of generated responses is also a priority in order to further improve the quality of the results. Furthermore, we aim to make <em>OneGeo Chat<\/em> a <strong>pilot<\/strong> for our <em>OneGeo Suite<\/em> platform. <\/p>\n\n<p class=\"wp-block-paragraph\">Finally, we would like to go further in the <strong>interpretation<\/strong> of <strong>geomatic data<\/strong> by leveraging not only the titles and descriptions of the datasets, but also their attributes and geometry.<\/p>\n\n<p class=\"wp-block-paragraph\">To <strong>stay informed<\/strong> about the evolution of <em>OneGeo Chat<\/em>, you can consult the <a href=\"https:\/\/neogeo.fr\/en\/\">official Neogeo website<\/a>, ask your questions and <strong>exchange<\/strong> with the <strong>community<\/strong> on our <a href=\"https:\/\/www.onegeosuite.fr\/forum\/\">forum<\/a>, and follow our news on <em><a href=\"https:\/\/www.linkedin.com\/company\/26783109\">LinkedIn<\/a><\/em>.<\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<p class=\"wp-block-paragraph\">Author: Mathilde Pommier<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chatbots are everywhere, but OneGeo Chat is not limited to generic answers: it leverages your datasets! Thanks to the RAG (Retrieval Augmented Generation) architecture, it queries and cross-references available information to provide accurate and contextualized answers tailored to your field. \ud83d\udd0d This article is for those who want to go further and discover what happens &#8230; <a title=\"Your OneGeo Chat chatbot: a technical breakdown\" class=\"read-more\" href=\"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/\" aria-label=\"Read more about Your OneGeo Chat chatbot: a technical breakdown\">Read more<\/a><\/p>\n","protected":false},"author":5,"featured_media":4923,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62,60],"tags":[],"class_list":["post-4922","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-products","category-uncategorized-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RAG Architecture: the OneGeo Chat chatbot | NEOGEO<\/title>\n<meta name=\"description\" content=\"How OneGeo Chat&#039;s RAG architecture queries your datasets to generate accurate responses, from harvesting to generation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RAG Architecture: the OneGeo Chat chatbot | NEOGEO\" \/>\n<meta property=\"og:description\" content=\"How OneGeo Chat&#039;s RAG architecture queries your datasets to generate accurate responses, from harvesting to generation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/\" \/>\n<meta property=\"og:site_name\" content=\"NEOGEO\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-17T15:44:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T14:25:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/140-scaled-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1398\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Philippe DESTR\u00c9\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Philippe DESTR\u00c9\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/\"},\"author\":{\"name\":\"Philippe DESTR\u00c9\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#\\\/schema\\\/person\\\/69685e84302b110f77d59dc8ee6e2d40\"},\"headline\":\"Your OneGeo Chat chatbot: a technical breakdown\",\"datePublished\":\"2025-03-17T15:44:15+00:00\",\"dateModified\":\"2026-10-23T14:25:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/\"},\"wordCount\":2424,\"publisher\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/neogeo.fr\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/140-scaled-1.jpg\",\"articleSection\":[\"Products\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/\",\"url\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/\",\"name\":\"RAG Architecture: the OneGeo Chat chatbot | NEOGEO\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/neogeo.fr\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/140-scaled-1.jpg\",\"datePublished\":\"2025-03-17T15:44:15+00:00\",\"dateModified\":\"2026-10-23T14:25:37+00:00\",\"description\":\"How OneGeo Chat's RAG architecture queries your datasets to generate accurate responses, from harvesting to generation.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/#primaryimage\",\"url\":\"https:\\\/\\\/neogeo.fr\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/140-scaled-1.jpg\",\"contentUrl\":\"https:\\\/\\\/neogeo.fr\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/140-scaled-1.jpg\",\"width\":2560,\"height\":1398,\"caption\":\"Chatbot technology, isometric set vector illustration. Ultraviolet background with mobile phone, artificial intelligence or robot figure, text bubble or message icons, interface design elements\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/your-onegeo-chat-chatbot-a-technical-breakdown\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Your OneGeo Chat chatbot: a technical breakdown\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/\",\"name\":\"NEOGEO\",\"description\":\"Optimisez,\u00a0valorisez,\\u2028partagez\u00a0vos\u00a0donn\u00e9es\u00a0spatiales\",\"publisher\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#organization\",\"name\":\"NEOGEO\",\"url\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/neogeo.fr\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/NEOGEO-LOGO.svg\",\"contentUrl\":\"https:\\\/\\\/neogeo.fr\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/NEOGEO-LOGO.svg\",\"width\":145,\"height\":42,\"caption\":\"NEOGEO\"},\"image\":{\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/#\\\/schema\\\/person\\\/69685e84302b110f77d59dc8ee6e2d40\",\"name\":\"Philippe DESTR\u00c9\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b366889cd846213d38b977f63dd60b6af7e9ed5b067a024a76fe0865155ef9db?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b366889cd846213d38b977f63dd60b6af7e9ed5b067a024a76fe0865155ef9db?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b366889cd846213d38b977f63dd60b6af7e9ed5b067a024a76fe0865155ef9db?s=96&d=mm&r=g\",\"caption\":\"Philippe DESTR\u00c9\"},\"url\":\"https:\\\/\\\/neogeo.fr\\\/en\\\/author\\\/pdestreneogeo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RAG Architecture: the OneGeo Chat chatbot | NEOGEO","description":"How OneGeo Chat's RAG architecture queries your datasets to generate accurate responses, from harvesting to generation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/","og_locale":"en_US","og_type":"article","og_title":"RAG Architecture: the OneGeo Chat chatbot | NEOGEO","og_description":"How OneGeo Chat's RAG architecture queries your datasets to generate accurate responses, from harvesting to generation.","og_url":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/","og_site_name":"NEOGEO","article_published_time":"2025-03-17T15:44:15+00:00","article_modified_time":"2026-10-23T14:25:37+00:00","og_image":[{"width":2560,"height":1398,"url":"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/140-scaled-1.jpg","type":"image\/jpeg"}],"author":"Philippe DESTR\u00c9","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Philippe DESTR\u00c9","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/#article","isPartOf":{"@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/"},"author":{"name":"Philippe DESTR\u00c9","@id":"https:\/\/neogeo.fr\/en\/#\/schema\/person\/69685e84302b110f77d59dc8ee6e2d40"},"headline":"Your OneGeo Chat chatbot: a technical breakdown","datePublished":"2025-03-17T15:44:15+00:00","dateModified":"2026-10-23T14:25:37+00:00","mainEntityOfPage":{"@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/"},"wordCount":2424,"publisher":{"@id":"https:\/\/neogeo.fr\/en\/#organization"},"image":{"@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/#primaryimage"},"thumbnailUrl":"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/140-scaled-1.jpg","articleSection":["Products"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/","url":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/","name":"RAG Architecture: the OneGeo Chat chatbot | NEOGEO","isPartOf":{"@id":"https:\/\/neogeo.fr\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/#primaryimage"},"image":{"@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/#primaryimage"},"thumbnailUrl":"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/140-scaled-1.jpg","datePublished":"2025-03-17T15:44:15+00:00","dateModified":"2026-10-23T14:25:37+00:00","description":"How OneGeo Chat's RAG architecture queries your datasets to generate accurate responses, from harvesting to generation.","breadcrumb":{"@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/#primaryimage","url":"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/140-scaled-1.jpg","contentUrl":"https:\/\/neogeo.fr\/wp-content\/uploads\/2025\/03\/140-scaled-1.jpg","width":2560,"height":1398,"caption":"Chatbot technology, isometric set vector illustration. Ultraviolet background with mobile phone, artificial intelligence or robot figure, text bubble or message icons, interface design elements"},{"@type":"BreadcrumbList","@id":"https:\/\/neogeo.fr\/en\/your-onegeo-chat-chatbot-a-technical-breakdown\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/neogeo.fr\/en\/"},{"@type":"ListItem","position":2,"name":"Your OneGeo Chat chatbot: a technical breakdown"}]},{"@type":"WebSite","@id":"https:\/\/neogeo.fr\/en\/#website","url":"https:\/\/neogeo.fr\/en\/","name":"NEOGEO","description":"Optimisez,\u00a0valorisez,\u2028partagez\u00a0vos\u00a0donn\u00e9es\u00a0spatiales","publisher":{"@id":"https:\/\/neogeo.fr\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/neogeo.fr\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/neogeo.fr\/en\/#organization","name":"NEOGEO","url":"https:\/\/neogeo.fr\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/neogeo.fr\/en\/#\/schema\/logo\/image\/","url":"https:\/\/neogeo.fr\/wp-content\/uploads\/2026\/06\/NEOGEO-LOGO.svg","contentUrl":"https:\/\/neogeo.fr\/wp-content\/uploads\/2026\/06\/NEOGEO-LOGO.svg","width":145,"height":42,"caption":"NEOGEO"},"image":{"@id":"https:\/\/neogeo.fr\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/neogeo.fr\/en\/#\/schema\/person\/69685e84302b110f77d59dc8ee6e2d40","name":"Philippe DESTR\u00c9","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b366889cd846213d38b977f63dd60b6af7e9ed5b067a024a76fe0865155ef9db?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b366889cd846213d38b977f63dd60b6af7e9ed5b067a024a76fe0865155ef9db?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b366889cd846213d38b977f63dd60b6af7e9ed5b067a024a76fe0865155ef9db?s=96&d=mm&r=g","caption":"Philippe DESTR\u00c9"},"url":"https:\/\/neogeo.fr\/en\/author\/pdestreneogeo\/"}]}},"_links":{"self":[{"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/posts\/4922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/comments?post=4922"}],"version-history":[{"count":1,"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/posts\/4922\/revisions"}],"predecessor-version":[{"id":4924,"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/posts\/4922\/revisions\/4924"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/media\/4923"}],"wp:attachment":[{"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/media?parent=4922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/categories?post=4922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/neogeo.fr\/en\/wp-json\/wp\/v2\/tags?post=4922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}