Cuando se recibe una pregunta, la aplicación primero busca documentos relevantes en el índice de Elasticsearch. Esto se consigue generando una incrustación vectorial dispersa para la pregunta y luego buscando en el índice las incrustaciones más cercanas, cada una asociada a un pasaje de un documento.
Como en la fase de ingestión, el índice Elasticsearch se gestiona mediante la integración ElasticsearchStore con Langchain:
Generar una incrustación para la pregunta y luego buscarla queda perfectamente abstraída por el método invoke() de la interfaz retriever de Langchain, que realiza todas estas tareas y devuelve la lista de los documentos más relevantes encontrados:
Aquí puedes ver cómo se envían los pasajes devueltos al cliente como fuentes. La aplicación React mostrará estos como "Resultados de búsqueda" debajo de la respuesta.
Es importante señalar que el argumento strategy que se emplea en la clase ElasticsearchStore debe coincidir con la estrategia empleada durante la ingesta. En este ejemplo, el SparseVectorRetrievalStrategy crea y busca vectores dispersos del modelo ELSER de Elastic. Otra opción interesante que puedes evaluar es usar el ApproxRetrievalStrategy, que emplea incrustaciones vectoriales densas.
Previamente
Punto final de chatbotPróximo
LLM Prompt