¿Cómo combinar agentes y tiendas de vectores en LangChain?

Como Combinar Agentes Y Tiendas De Vectores En Langchain



LangChain es el marco que diseña modelos de lenguaje. Grandes cantidades de datos entrenan estos modelos en lenguaje natural. Existen muchas bases de datos o almacenes de vectores como Chroma, etc. para gestionar estos conjuntos de datos. Al combinar los almacenes de agentes y vectores, el modelo funciona mejor con datos de diferentes dominios. LangChain permite el uso de muchos almacenes de vectores para entrenar el modelo de lenguaje o chatbot.

Esquema rápido

Esta publicación mostrará:







Cómo utilizar un agente para devolver una salida estructurada en LangChain



Método 1: combinar agente con tiendas de vectores



Método 2: usar el agente como enrutador





Método 3: uso del agente con almacén de vectores de saltos múltiples

Conclusión



¿Cómo utilizar un agente para devolver una salida estructurada en LangChain?

El desarrollador utiliza agentes para enrutar entre las bases de datos que contienen datos de entrenamiento para los modelos. Un agente tiene el plano del proceso completo al almacenar todos los pasos. El agente tiene las herramientas para realizar todas estas actividades para completar el proceso. El usuario también puede utilizar el agente para obtener datos de diferentes almacenes de datos para que el modelo sea diverso.

Para conocer el proceso de combinación de agentes y tiendas de vectores en LangChain, simplemente siga los pasos enumerados:

Paso 1: instalar marcos

Primero, instale el módulo LangChain y sus dependencias para combinar los agentes y las tiendas de vectores:

pip instalar cadena larga

En esta guía, utilizamos la base de datos Chroma que puede almacenar datos en diferentes ubicaciones o tablas:

pip instala cromadb

Para comprender mejor los datos, divida los archivos grandes en partes más pequeñas usando el tokenizador tiktoken:

instalar pip tiktoken

OpenAI es el módulo que se puede utilizar para construir el modelo de lenguaje grande en el marco LangChain:

instalación de pip en openai

Paso 2: entorno OpenAI

El siguiente paso aquí es configurar el entorno utilizando la clave API de OpenAI que se puede extraer de la cuenta oficial de OpenAI:

importar
importar conseguir pase

. alrededor de [ 'OPENAI_API_KEY' ] = conseguir pase . conseguir pase ( 'Clave API de OpenAI:' )

Ahora, sube los datos del sistema local al colaboratorio de Google para poder utilizarlos en el futuro:

de Google. Y AL importar archivos

subido = archivos. subir ( )

Paso 3: crear una tienda de vectores

Este paso configura el primer componente de nuestra tarea, que es un almacén de vectores para almacenar los datos cargados. La configuración de las tiendas de vectores requiere bibliotecas que se pueden importar desde diferentes dependencias de LangChain:

de cadena larga. incrustaciones . abierto importar Incrustaciones de OpenAI

#Vector almacena la dependencia para obtener la base de datos o el vector requerido

de cadena larga. vectorestiendas importar croma

#El divisor de texto se utiliza para convertir el texto grande en fragmentos más pequeños

de cadena larga. divisor de texto importar Divisor De Texto De Carácter

de cadena larga. llms importar AbiertoAI

de cadena larga. cargadores_de_documentos importar Cargador de base web

de cadena larga. cadenas importar RecuperaciónQA


llm = AbiertoAI ( temperatura = 0 )

Paso 4: establecer el camino

Después de importar las bibliotecas, simplemente establezca la ruta para acceder a las tiendas de vectores antes de almacenar los datos en ellas:

de rutalib importar Camino

piezas_relevantes = [ ]
para pag en Camino ( '.' ) . absoluto ( ) . partes :
piezas_relevantes. adjuntar ( pag )
    si piezas_relevantes [ - 3 : ] == [ 'cadena lang' , 'docs' , 'módulos' ] :
        romper
#Declaración condicional dentro del bucle para establecer la ruta para cada base de datos
ruta_doc = cadena ( Camino ( *piezas_relevantes ) / 'estado_de_la_unión.txt' )

Paso 5: cargar y dividir los datos

Ahora, simplemente cargue los datos y divídalos en partes más pequeñas para mejorar su legibilidad y comprensión. Cree incrustaciones de los datos convirtiendo el texto en números creando sus espacios vectoriales y almacenándolos en la base de datos Chorma:

de cadena larga. cargadores_de_documentos importar Cargador de texto

#Cargar el conjunto de datos desde su ruta y almacenar sus fragmentos más pequeños en la base de datos

cargador = Cargador de texto ( ruta_doc )

documentos = cargador. carga ( )

divisor de texto = Divisor De Texto De Carácter ( tamaño de porción = 2000 , trozo_superposición = 0 )

textos = divisor de texto. documentos_divididos ( documentos )

#Convierta texto en números y almacene las incrustaciones en la base de datos

incrustaciones = Incrustaciones de OpenAI ( )

búsqueda de documentos = Croma. de_documentos ( textos , incrustaciones , nombre_colección = 'estado de unión' )

Paso 6: crear un recuperador

Para combinar almacenes de agentes y vectores, es necesario crear un recuperador utilizando el método RetrievalQA() del marco LangChain. Se recomienda este método de recuperación para obtener datos de almacenes de vectores utilizando los agentes como herramienta para trabajar con las bases de datos:

estado_de_union = RecuperaciónQA. desde_tipo_cadena (

llm = llm , tipo_cadena = 'cosa' , perdiguero = búsqueda de documentos. como_retriever ( )

)

Cargue otro conjunto de datos para integrar el agente con múltiples conjuntos de datos o almacenes de vectores:

cargador = Cargador de base web ( 'https://beta.ruff.rs/docs/faq/' )

Almacene el conjunto de datos de ruff en chromadb después de crear también los fragmentos más pequeños de datos con los vectores de incrustación:

documentos = cargador. carga ( )
textos_ruff = divisor de texto. documentos_divididos ( documentos )
ruff_db = Croma. de_documentos ( textos_ruff , incrustaciones , nombre_colección = 'fallar' )
fallar = RecuperaciónQA. desde_tipo_cadena (
llm = llm , tipo_cadena = 'cosa' , perdiguero = ruff_db. como_retriever ( )
)

Método 1: combinar agente con tiendas de vectores

El primer método de combinar agentes y almacenes de vectores para extraer información se menciona a continuación:

Paso 1: configurar herramientas

Ahora que los almacenes de vectores están configurados, avancemos hacia la construcción del segundo componente de nuestro proceso, es decir, el agente. Para crear el agente para el proceso, importe las bibliotecas utilizando las dependencias como agentes, herramientas, etc.

de cadena larga. agentes importar agente_inicializar
de cadena larga. agentes importar Tipo de agente
#Obtener herramientas de LangChain para crear el agente
de cadena larga. herramientas importar Herramienta base
de cadena larga. llms importar Abierto AI
#Obtener LLMMathChain de cadenas para construir el modelo de lenguaje
de cadena larga. cadenas importar LLMMathChain
de cadena larga. utilidades importar SerpAPIWrapper
de cadena larga. agentes importar Herramienta

Configure las herramientas que se utilizarán con los agentes utilizando el sistema de control de calidad o recuperación configurado anteriormente con el nombre y descripción de las herramientas:

herramientas = [
Herramienta (
nombre = 'Sistema de control de calidad del estado de la Unión' ,
función = estado_de_unión. correr ,
descripción = 'Proporciona respuestas a las preguntas relacionadas con el conjunto de datos cargado con entradas como una pregunta completamente formada' ,
    ) ,
Herramienta (
nombre = 'Sistema de control de calidad de Ruff' ,
función = fallar. correr ,
descripción = 'Proporciona respuestas a las preguntas sobre ruff (un linter de Python) con información como una pregunta completamente formada' ,
    ) ,
]

Paso 2: inicializar el agente

Una vez configuradas las herramientas, simplemente configure el agente en el argumento del método inicializa_agent(). El agente que estamos usando aquí es el ZERO_SHOT_REACT_DESCRIPTION junto con las herramientas, llm (modelo de lenguaje) y detallado:

agente = agente_inicializar (

herramientas , llm , agente = Tipo de agente. ZERO_SHOT_REACT_DESCRIPTION , verboso = Verdadero

)

Paso 3: probar el agente

Simplemente ejecute el agente usando el método run() que contiene la pregunta en su argumento:

agente. correr (

'¿Qué dijo el presidente Joe Biden sobre el kanji brown en el discurso?'

)

La siguiente captura de pantalla muestra la respuesta extraída de ambos almacenes de datos utilizando la observación almacenada en la memoria del agente:

Método 2: usar el agente como enrutador

Otra forma de combinar ambos componentes es utilizando el agente como enrutador y a continuación se explica el proceso:

Paso 1: configurar herramientas

Usar el agente como enrutador significa que el sistema RetrievalQA devolverá la salida directamente ya que las herramientas están configuradas para devolver la salida directamente:

herramientas = [
#configurar las herramientas necesarias para construir el agente para obtener datos de los datos
Herramienta (
nombre = 'Sistema de control de calidad del estado de la Unión' ,
función = estado_de_unión. correr ,
descripción = 'Proporciona respuestas a las preguntas relacionadas con el conjunto de datos cargado con entradas como una pregunta completa' ,
retorno_directo = Verdadero ,
    ) ,
Herramienta (
nombre = 'Sistema de control de calidad de Ruff' ,
función = fallar. correr ,
descripción = 'Proporciona respuestas a las preguntas sobre ruff (un linter de Python) con información como una pregunta completa' ,
retorno_directo = Verdadero ,
    ) ,
]

Paso 2: Inicializar y probar el agente

Después de configurar las herramientas, simplemente configure el agente que puede usarse únicamente como enrutador usando el método inicialize_agent():

agente = agente_inicializar (

herramientas , llm , agente = Tipo de agente. ZERO_SHOT_REACT_DESCRIPTION , verboso = Verdadero

)

Pruebe el agente dando la pregunta de entrada en el método agent.run() ejecutando el siguiente comando:

agente. correr (

'¿Qué dijo el presidente Joe Biden sobre el kanji brown en el discurso?'

)

Producción

La captura de pantalla de salida muestra que el agente simplemente devolvió la respuesta a la pregunta del conjunto de datos extraído por el sistema RetrievalQA:

Método 3: uso del agente con almacén de vectores de saltos múltiples

El tercer método en el que los desarrolladores pueden combinar almacenes de agentes y vectores es para las consultas del almacén de vectores de múltiples saltos. La siguiente sección explica el proceso completo:

Paso 1: configurar herramientas

El primer paso es, como es habitual, la configuración de las herramientas utilizadas para construir los agentes para extraer datos de los almacenes de datos:

herramientas = [
Herramienta (
nombre = 'Sistema de control de calidad del estado de la Unión' ,
función = estado_de_unión. correr ,
descripción = 'Proporciona respuestas a las preguntas relacionadas con el conjunto de datos cargado con entradas como una pregunta completamente formada, sin hacer referencia a ningún pronombre de la conversación anterior' ,
    ) ,
Herramienta (
nombre = 'Sistema de control de calidad de Ruff' ,
función = fallar. correr ,
descripción = 'Proporciona respuestas a las preguntas relacionadas con el conjunto de datos cargado con entradas como una pregunta completamente formada, sin hacer referencia a ningún pronombre de la conversación anterior' ,
    ) ,
]

Paso 2: Inicializar y probar el agente

Después de eso, cree la variable del agente usando el método inicialize_agent() con el nombre del agente:

agente = agente_inicializar (

herramientas , llm , agente = Tipo de agente. ZERO_SHOT_REACT_DESCRIPTION , verboso = Verdadero

)

Ejecute el agente utilizando la pregunta de múltiples saltos que contiene más de un aspecto o característica, ya que el siguiente bloque de código contiene dicha pregunta:

agente. correr (

'¿Qué herramienta utiliza ruff para ejecutar cuadernos de Python? ¿Alguno de los oradores mencionó la herramienta en su discurso?'

)

Producción

La siguiente captura de pantalla sugiere que el agente tiene que resolver la pregunta para comprender su complejidad. Ha devuelto la respuesta extraída por el sistema de control de calidad de los múltiples almacenes de datos que cargamos anteriormente en el proceso:

Se trata de cómo combinar agentes y tiendas de vectores en LangChain.

Conclusión

Para combinar agentes con las tiendas de vectores en LangChain, comience con la instalación de módulos para configurar el entorno y cargar conjuntos de datos. Configure los almacenes de vectores para cargar datos dividiéndolos primero en fragmentos más pequeños y luego cree el modelo de lenguaje utilizando el método OpenAI(). Configure el agente para integrarlo con el almacén de vectores para extraer datos para diferentes tipos de consultas. Este artículo ha detallado el proceso de combinación de agentes y tiendas de vectores en LangChain.