Desarrollar aplicaciones basadas en LLM con LangChain

En esta página se explica cómo crear aplicaciones basadas en LLMs con LangChain. Las descripciones generales de esta página enlazan con guías de procedimientos en GitHub.

¿Qué es LangChain?

LangChain es un framework de orquestación de LLMs que ayuda a los desarrolladores a crear aplicaciones de IA generativa o flujos de trabajo de generación aumentada por recuperación (RAG). Proporciona la estructura, las herramientas y los componentes necesarios para optimizar flujos de trabajo complejos de LLMs.

Para obtener más información sobre LangChain, consulta la página Google LangChain. Para obtener más información sobre el framework LangChain, consulta la documentación del producto LangChain.

Componentes de LangChain para Spanner

Spanner ofrece las siguientes interfaces de LangChain:

Almacén de vectores para Spanner

Vector Store recupera y almacena documentos y metadatos de una base de datos vectorial. El almacén de vectores permite que una aplicación realice búsquedas semánticas que interpreten el significado de una consulta de usuario. Este tipo de búsqueda se denomina búsqueda vectorial y puede encontrar temas que coincidan conceptualmente con la consulta. En el momento de la consulta, el almacén de vectores recupera los vectores de inserción que son más similares a la inserción de la solicitud de búsqueda. En LangChain, un almacén de vectores se encarga de almacenar los datos insertados y de realizar la búsqueda de vectores por ti.

Para trabajar con el almacén de vectores en Spanner, usa la clase SpannerVectorStore.

Para obtener más información, consulta la documentación del producto LangChain Vector Stores.

Guía de procedimientos de la tienda de vectores

En la guía de Spanner para vector store se explica cómo hacer lo siguiente:

  • Instalar el paquete de integración y LangChain
  • Inicializar una tabla para el almacén de vectores
  • Configurar un servicio de inserción con VertexAIEmbeddings
  • Inicializar SpannerVectorStore
  • Añadir y eliminar documentos
  • Buscar documentos similares
  • Crea un almacén de vectores personalizado para conectarte a una base de datos de Spanner que ya tenga una tabla con incrustaciones de vectores

Cargador de documentos para Spanner

El cargador de documentos guarda, carga y elimina objetos Document de LangChain. Por ejemplo, puede cargar datos para procesarlos en inserciones y almacenarlos en un almacén de vectores o usarlos como herramienta para proporcionar contexto específico a las cadenas.

Para cargar documentos de Spanner, usa la clase SpannerLoader. Usa la clase SpannerDocumentSaver para guardar y eliminar documentos.

Para obtener más información, consulta el tema Cargadores de documentos de LangChain.

Guía de procedimientos del cargador de documentos

En la guía de Spanner para document loader se explica cómo hacer lo siguiente:

  • Instalar el paquete de integración y LangChain
  • Cargar documentos de una tabla
  • Añadir un filtro al cargador
  • Personalizar la conexión y la autenticación
  • Personalizar la creación de documentos especificando el contenido y los metadatos del cliente
  • Cómo usar y personalizar un SpannerDocumentSaver para almacenar y eliminar documentos

Historial de mensajes de chat de Spanner

Las aplicaciones de preguntas y respuestas requieren un historial de lo que se ha dicho en la conversación para dar contexto a la aplicación y responder a las preguntas posteriores del usuario. La clase ChatMessageHistory de LangChain permite que la aplicación guarde mensajes en una base de datos y los recupere cuando sea necesario para formular más respuestas. Un mensaje puede ser una pregunta, una respuesta, una afirmación, un saludo o cualquier otro texto que el usuario o la aplicación proporcione durante la conversación. ChatMessageHistory almacena cada mensaje y los encadena en cada conversación.

Spanner amplía esta clase con SpannerChatMessageHistory.

Guía de procedimiento del historial de mensajes de chat

En la guía de Spanner para el historial de mensajes de chat se explica cómo hacer lo siguiente:

  • Instalar LangChain y autenticarse en Google Cloud
  • Inicializar una tabla
  • Inicializa la clase SpannerChatMessageHistory para añadir y eliminar mensajes.
  • Usar un cliente para personalizar la conexión y la autenticación
  • Eliminar la sesión de SpannerChatMessageHistory

Almacén de gráficos para Spanner

El almacén de gráficos recupera y almacena nodos y aristas de una base de datos de gráficos. Usa graph store para permitir que una aplicación haga lo siguiente:

  • Añadir nodos y aristas a un gráfico
  • Realizar recorridos y análisis en un gráfico
  • Inspeccionar el esquema de un gráfico

También puedes usar el almacén de gráficos con la cadena de preguntas y respuestas de gráficos para crear una aplicación que pueda chatear con un gráfico.

Para usar el almacén de grafos con Spanner Graph, usa la clase SpannerGraphStore para almacenar los nodos y las aristas que se extraen de los documentos. SpannerGraphStore es compatible con Graph Query Language (GQL).

Guía de procedimientos de la tienda de gráficos

En la guía de Spanner para almacenes de grafos se explica cómo hacer lo siguiente:

  • Instalar el paquete de integración y LangChain
  • Preparar gráficos a partir de varias fuentes de datos
  • Inicializar SpannerGraphStore con una base de datos de Spanner Graph
  • Añadir nodos y aristas a Spanner Graph
  • Hacer recorridos con una consulta GQL
  • Visualizar los resultados de la consulta de gráfico
  • Limpiar el gráfico

Cadena de preguntas y respuestas de gráficos para Spanner

La cadena de preguntas y respuestas de gráficos de Spanner usa un gráfico de Spanner para responder preguntas. El flujo de trabajo de control de calidad de gráficos para responder a una pregunta es el siguiente:

  1. Graph QA usa un LLM de LangChain para traducir una pregunta en lenguaje natural a una consulta de GQL.
  2. Spanner Graph usa la interfaz de almacenamiento de gráficos para ejecutar la consulta de GQL.
  3. Los resultados de la consulta de GQL se envían de vuelta al LLM.
  4. El LLM genera y devuelve la respuesta a la pregunta.

Guía de procedimientos de control de calidad de gráficos

En la guía de Spanner para el control de calidad de gráficos se muestra cómo usar Spanner y el control de calidad de gráficos para responder a una pregunta. Para ello, se explica cómo hacer lo siguiente:

  • Crea un gráfico a partir de blobs de texto sin estructurar con LLMGraphTransformer.
  • Almacena el gráfico en Spanner Graph con la clase SpannerGraphStore.
  • Inicializa una instancia de SpannerGraphQAChain.
  • Genera una respuesta a una pregunta de lenguaje natural mediante el almacén de gráficos de Spanner Graph.