Aprende cómo integrar Rememberizer como un recuperador de LangChain para proporcionar a tu aplicación de LangChain acceso a una poderosa búsqueda en bases de datos vectoriales.
Integración de LangChain
Rememberizer se integra con LangChain a través de la clase RememberizerRetriever, lo que te permite incorporar fácilmente las capacidades de búsqueda semántica de Rememberizer en tus aplicaciones impulsadas por LangChain. Esta guía explica cómo configurar y utilizar esta integración para construir aplicaciones avanzadas de LLM con acceso a tu base de conocimientos.
Introducción
LangChain es un marco popular para construir aplicaciones con modelos de lenguaje grandes (LLMs). Al integrar Rememberizer con LangChain, puedes:
Usar tu base de conocimientos de Rememberizer en aplicaciones RAG (Generación Aumentada por Recuperación)
Crear chatbots con acceso a tus documentos y datos
Construir sistemas de preguntas y respuestas que aprovechen tu conocimiento
Desarrollar agentes que puedan buscar y razonar sobre tu información
La integración está disponible en el módulo langchain_community.retrievers.
qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", # Método más simple - simplemente agrupar todos los documentos en el aviso retriever=retriever, return_source_documents=True )
Haz una pregunta
response = qa_chain.invoke({"query": "¿Qué es RAG en el contexto de la IA?"})
Imprimir la respuesta
print(f"Respuesta: {response['result']}") print("\nFuentes:") for idx, doc in enumerate(response['source_documents']): print(f"{idx+1}. {doc.metadata['name']}")
questions = [ "¿Qué es RAG?", "¿Cómo lo utilizan los modelos de lenguaje grandes?", "¿Cuáles son las limitaciones de este enfoque?", ]
for question in questions: response = conversation.invoke({"question": question}) print(f"Pregunta: {question}") print(f"Respuesta: {response['answer']}\n")
Crear recuperadores
rememberizer_retriever = RememberizerRetriever(top_k_results=3) web_retriever = WebResearchRetriever(...) # Configurar otro recuperador
Crear un conjunto con puntuación ponderada
ensemble_retriever = EnsembleRetriever( retrievers=[rememberizer_retriever, web_retriever], weights=[0.7, 0.3] # Los resultados de Rememberizer tienen mayor peso )
Examine los resultados de búsqueda en bruto antes de pasarlos a LLM para identificar problemas de recuperación
import os
from langchain_community.retrievers import RememberizerRetriever
### Comprendiendo la Estructura del Documento
Cada documento devuelto por el recuperador tiene:
- `page_content`: El contenido de texto del fragmento de documento coincidente
- `metadata`: Información adicional sobre el documento
Ejemplo de la estructura de metadatos:
```python
{
'id': 13646493,
'document_id': '17s3LlMbpkTk0ikvGwV0iLMCj-MNubIaP',
'name': 'What is a large language model (LLM)_ _ Cloudflare.pdf',
'type': 'application/pdf',
'path': '/langchain/What is a large language model (LLM)_ _ Cloudflare.pdf',
'url': 'https://drive.google.com/file/d/17s3LlMbpkTk0ikvGwV0iLMCj-MNubIaP/view',
'size': 337089,
'created_time': '',
'modified_time': '',
'indexed_on': '2024-04-04T03:36:28.886170Z',
'integration': {'id': 347, 'integration_type': 'google_drive'}
}
import os
from langchain_community.retrievers import RememberizerRetriever
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
### Construyendo un Agente Conversacional con Memoria
Este ejemplo crea un agente conversacional que puede mantener el historial de la conversación:
```python
import os
from langchain_community.retrievers import RememberizerRetriever
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
## Mejores Prácticas
### Optimización del Rendimiento de Recuperación
1. **Sé específico con las consultas**: Las consultas más específicas suelen dar mejores resultados
2. **Ajusta `top_k_results`**: Comienza con 3-5 resultados y ajusta según las necesidades de la aplicación
3. **Utiliza ventanas de contexto**: El recuperador incluye automáticamente contexto alrededor de los fragmentos coincidentes
### Consideraciones de Seguridad
1. **Protege tu clave API**: Almacénala de forma segura utilizando variables de entorno o herramientas de gestión de secretos
2. **Crea claves dedicadas**: Crea claves API separadas para diferentes aplicaciones
3. **Rota las claves regularmente**: Genera nuevas claves periódicamente y elimina las antiguas
### Patrones de Integración
1. **Procesamiento previo a la recuperación**: Considera el preprocesamiento de las consultas de los usuarios para mejorar la relevancia de la búsqueda
2. **Filtrado posterior a la recuperación**: Filtra o clasifica los documentos recuperados antes de pasarlos al LLM
3. **Búsqueda híbrida**: Combina Rememberizer con otros recuperadores utilizando `EnsembleRetriever`
```python
from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import RememberizerRetriever, WebResearchRetriever
## Solución de problemas
### Problemas Comunes
1. **Errores de autenticación**: Verifica que tu clave API sea correcta y esté configurada adecuadamente
2. **No se devolvieron resultados**: Asegúrate de que tu Conocimiento Común contenga información relevante
3. **Limitación de tasa**: Ten en cuenta los límites de tasa de la API para aplicaciones de alto volumen
### Consejos de Depuración
- Establezca el modo de depuración de LangChain para ver llamadas a la API detalladas:
```python
import langchain
langchain.debug = True