How does this website work?
This website is essentially a RAG system. All our documentation, both internal and public, is indexed in the same vector database, but each fragment carries metadata indicating which document it came from and whether it is public or not. When someone asks a question, the search is filtered by that metadata. An anonymous user can only reach the fragments marked as public.
We have the documentation stored in Google Drive, and two paths come out of that same folder:
- The website synchronizes itself with Drive. A process within the application itself checks the folder every minute, downloads only what has changed and publishes it.
- An independent process synchronizes the RAG. It processes those same documents, chunks them, indexes them in the vector database and tags them with their reference document and their visibility.
There are two configurations for this web application. One intended to run on the organization’s own infrastructure (internal version) and another aimed at being served publicly (public version). Our staff can authenticate in the internal version with their corporate account, giving them access to private content. For the moment we all have the same role, although in the future we envisage having different permissions with access to different levels of documentation. On the other hand, external users can only launch queries that retrieve public information only.
There is some static documentation in a sheet that slides up from the bottom, but most of the content is only accessible through a chat interface.
When a user types or dictates a question (prompt), the intent is analyzed and the vector database is searched for the information closest to what is being requested. These fragments of information are extracted with their references and sent to an LLM so that it composes the answer. A key aspect is to always include the references to the original documents.
There are certain intents that get special treatment:
If the system detects that we are talking to a candidate who might be interested in working with us, a mode is activated that allows them to attach their CV.
If a potential client interested in contacting us about some project is detected, their contact details are requested. It would be the first time a project has come to us through the website, and that is why over the last few years we always had somewhat special websites, but there is always a first time for everything.
Members of the organization have access to a series of tools that allow the retrieval of structured information.
Members of the organization can recommend someone by sending their CV through the chat.
We will keep expanding the number of intents as we analyze the type of queries that are being made.
To detect the intent, we pass the user’s question to an LLM so that it extracts it.
If we have done it well, the chatbot should never express that it has feelings nor behave in an anthropomorphic manner. It is a machine that neither feels nor suffers. It will simply give access to the information we have made available in those vector databases.
We believe that words matter and we do not like it when machines express themselves as if they had human feelings. Nor do we like it being said that they think or hallucinate when they really look for the next most probable word and they do not hallucinate, they have bugs, as has always been said when a piece of software fails.
The chat can work badly and at times answer incorrect things. The most frequent error is that it leaves unanswered things it really should answer; many times it is enough to rephrase the question. Besides, if you make an effort, you will surely manage to get it to answer absurd things. It is the price we have to pay when using an LLM and we do not mind; if you ask in good faith we think you will find it useful. If you have been looking to tickle it, it is surely because you already know all this and in that case we are glad you have had an entertaining time trying to troll our website.
When you send us your CV or your contact details, these will be handled directly by a human. We take it very seriously when we deal with people and for the moment we do not receive so much information that we cannot handle it with care. There is a first filter in the website itself to try to discard users who are only testing the page with random information, without any real interest, and upload any old PDF to us instead of their CV, but the filter is not too sophisticated either and if by mistake it gave a false positive, you will see it clearly in the answer you receive.
This content has been written without AI.