Cuando vamos a buscar información en un libro, debemos basarnos en algún tipo de guía para comprender dónde se encuentran ciertos fragmentos de información, una manera de hacerlo es mediante la división de capítulos, subcapítulos y títulos, donde todos estos estarán sintetizados en un índice o index al inicio (o final) del libro.

Este index dará descripciones concisas y precisas sobre el título y contenido de esa sección del libro. En el contexto de LangChain esto funcionará de la misma manera.

Tendremos una serie de documentos que agregaremos a una base de datos vectorial, estos serán divididos y tendremos acceso a un montón de páginas con diferentes tokens clave que nos darán nociones sobre la información que hay allí.

La base de datos vectorial creará los índices por nosotros y solo bastará hacer las queries correctas para dar match con el index correctos.

Antes de explorar la clase Document, indaguemos en el resto de componentes que la hacen funcional.

Índices y recuperación

La operación más común en las cadenas de procesamiento de datos se llama recuperación, y consta en tomar la consulta del usuario y retornar los documentos más relevantes, si bien esta es la aplicación más común, no es el único uso de los índices, además, podremos hacer uso de otras técnicas a parte de la recuperación para encontrar documentos relevantes.

El retriever

El retriever será el componente encargado de localizar y devolver los documentos más relevantes según la consulta propuesta, se puede entender como un bibliotecario con dominio total al que le puedes preguntar dónde está un libro o una sección en específico de una librería.

El retriever usará el método get_relevant_documents el cuál determinará las directrices para obtener los documentos, si bien esta funcionalidad puede ser modificada a voluntad, la propia LangChain ha diseñado una estrategia para recuperar los documentos más relevantes de una manera fuertemente eficiente; esta estrategia se basa en los vectorstore, un tipo de base de datos vectorial en la que indagaremos a continuación.