Desarrollar aplicaciones basadas en LLM con LlamaIndex

Selecciona una versión de la documentación:

En esta página se describen algunos casos prácticos para crear aplicaciones basadas en LLMs con LlamaIndex integrado en AlloyDB Omni. Se proporcionan enlaces a cuadernos en GitHub para ayudarte a explorar enfoques o a desarrollar tu aplicación.

LlamaIndex es un framework de orquestación de IA generativa que te permite conectar e integrar fuentes de datos con modelos de lenguaje extenso (LLMs). Puedes usar LlamaIndex para crear aplicaciones que accedan a información de datos privados o específicos de un dominio y la consulten mediante consultas en lenguaje natural.

LlamaIndex actúa como puente entre los datos personalizados y los LLMs, lo que facilita el desarrollo de aplicaciones de asistente de conocimientos con funciones de generación aumentada por recuperación (RAG).

LlamaIndex es ideal para aplicaciones centradas en documentos porque enfatiza la gestión de documentos estructurados, lo que simplifica la indexación y la recuperación. Este marco incluye mecanismos de consulta optimizados que mejoran la velocidad y la relevancia del acceso a la información, así como un sólido sistema de gestión de metadatos para un filtrado preciso.

Para obtener más información sobre el framework LlamaIndex, consulta la documentación del producto LlamaIndex.

Componentes de LlamaIndex

AlloyDB Omni ofrece las siguientes interfaces de LlamaIndex:

  • Vector Store
  • Document Store
  • Index Stores
  • Chat Stores
  • Lector de documentos

Consulta cómo usar LlamaIndex con la guía de inicio rápido de AlloyDB Omni.

Vector Store

Esta integración de LlamaIndex te permite usar la naturaleza robusta y escalable de AlloyDB Omni para almacenar y gestionar tus datos de LlamaIndex. Al combinar las funciones de indexación y consulta de LlamaIndex con el alto rendimiento y la fiabilidad de AlloyDB Omni, puedes crear aplicaciones más eficientes y escalables basadas en LLMs.

LlamaIndex desglosa un documento (documento, texto y PDFs) en componentes de documento llamados nodos. El VectorStore solo puede contener los vectores de inserción del contenido de los nodos ingeridos y el texto de los nodos. Un nodo contiene contenido de texto, inserciones de vector y metadatos. Puede aplicar filtros a estos campos de metadatos para restringir la recuperación de nodos a aquellos que coincidan con los criterios de metadatos especificados.

Para trabajar con almacenes de vectores en AlloyDB Omni, usa la clase AlloyDBVectorStore. Para obtener más información, consulta LlamaIndex Vector Stores.

Almacenar incrustaciones de vectores con la clase AlloyDBVectorStore

El cuaderno de AlloyDB Omni para el almacén de vectores te muestra cómo hacer lo siguiente:

  • Crea un AlloyDBEngine para conectarte a tu instancia de AlloyDB Omni mediante AlloyDBEngine.from_connection_string().
  • Inicializa una tabla para almacenar incrustaciones de vectores.
  • Crea una instancia de la clase de inserción con cualquier modelo de inserciones de índice de Llama.
  • Inicializa un almacén de vectores AlloyDBVectorStore predeterminado.
  • Crea un índice a partir del almacén de vectores y haz consultas en él con VectorStoreIndex.
  • Crea un almacén de vectores personalizado para almacenar y filtrar metadatos.
  • Añade un índice ANN para mejorar la latencia de búsqueda.

Almacenes de documentos e índices

La integración de LlamaIndex Document Stores gestiona el almacenamiento y la recuperación de documentos estructurados, lo que optimiza las funciones centradas en documentos de LlamaIndex. Document Store almacena el contenido relacionado con los vectores del almacén de vectores.

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

Los almacenes de índices facilitan la gestión de los índices para permitir consultas y recuperaciones de datos rápidas, como los índices de resumen, de palabras clave y de árbol. Index en LlamaIndex es un almacenamiento ligero solo para los metadatos de los nodos. Para actualizar los metadatos de un nodo, no es necesario volver a indexar (es decir, generar la inserción) del nodo completo ni de todos los nodos de un documento.

Para obtener más información, consulta LlamaIndex Index Stores.

Almacenar documentos e índices

En el cuaderno de AlloyDB Omni para Document Stores se muestra cómo usar AlloyDB Omni para almacenar documentos e índices con las clases AlloyDBDocumentStore y AlloyDBIndexStore. Aprenderás a hacer lo siguiente:

  • Crea un AlloyDBEngine para conectarte a tu instancia de AlloyDB Omni mediante AlloyDBEngine.from_connection_string().
  • Crea tablas para DocumentStore e IndexStore.
  • Inicializa un AlloyDBDocumentStore predeterminado.
  • Configura un AlloyDBIndexStore.
  • Añade documentos a la Docstore.
  • Usa almacenes de documentos con varios índices.
  • Carga los índices existentes.

Chat Stores

Los Chat Stores mantienen el historial y el contexto de las conversaciones de las aplicaciones basadas en chat, lo que permite ofrecer interacciones personalizadas. Los Chat Stores proporcionan un repositorio central que almacena y recupera mensajes de chat en una conversación, lo que permite al LLM mantener el contexto y ofrecer respuestas más relevantes en función del diálogo en curso.

Los modelos de lenguaje extensos no tienen estado de forma predeterminada, lo que significa que no conservan las entradas anteriores a menos que se proporcionen explícitamente cada vez. Si usas un almacén de conversaciones, puedes conservar el contexto de la conversación, lo que permite que el modelo genere respuestas más relevantes y coherentes con el tiempo.

El módulo de memoria de LlamaIndex permite almacenar y recuperar de forma eficiente el contexto de las conversaciones, lo que permite que las interacciones en las aplicaciones de chat sean más personalizadas y adaptadas al contexto. Puedes integrar el módulo de memoria en LlamaIndex con un ChatStore y un ChatMemoryBuffer. Para obtener más información, consulta LlamaIndex Chat Stores.

Almacenar el historial de chat

En el cuaderno de AlloyDB Omni sobre Chat Stores se muestra cómo usar AlloyDB for PostgreSQL para almacenar el historial de conversaciones mediante la clase AlloyDBChatStore. Aprenderás a hacer lo siguiente:

  • Crea un AlloyDBEngine para conectarte a tu instancia de AlloyDB Omni mediante AlloyDBEngine.from_connection_string().
  • Inicializa un AlloyDBChatStore predeterminado.
  • Crea un ChatMemoryBuffer.
  • Crea una instancia de la clase LLM.
  • Usar AlloyDBChatStore sin contexto de almacenamiento.
  • Usa AlloyDBChatStore con un contexto de almacenamiento.
  • Crea y usa el Chat Engine.

Lector de documentos

Document Reader extrae y transforma datos de AlloyDB Omni de forma eficiente en formatos compatibles con LlamaIndex para indexarlos. La interfaz Document Reader proporciona métodos para cargar datos de una fuente como Documents.

Document es una clase que almacena un fragmento de texto y los metadatos asociados. Puedes usar lectores de documentos para cargar los documentos que quieras almacenar en almacenes de documentos o para crear índices.

Para obtener más información, consulta LlamaIndex Document Reader.

Obtener datos como documentos

El cuaderno de AlloyDB Omni de Document Reader te muestra cómo usar AlloyDB Omni para recuperar datos como documentos mediante la clase AlloyDBReader. Aprenderás a hacer lo siguiente:

  • Crea un AlloyDBEngine para conectarte a tu instancia de AlloyDB Omni mediante AlloyDBEngine.from_connection_string().
  • Crear AlloyDBReader.
  • Carga documentos con el argumento table_name.
  • Carga documentos mediante una consulta SQL.
  • Define el formato del contenido de la página.
  • Carga los documentos.

Siguientes pasos