Scopri come integrare Rememberizer come un recuperatore LangChain per fornire alla tua applicazione LangChain l'accesso a una potente ricerca nel database vettoriale.
Integrazione LangChain
Rememberizer si integra con LangChain attraverso la classe RememberizerRetriever, consentendoti di incorporare facilmente le capacità di ricerca semantica di Rememberizer nelle tue applicazioni alimentate da LangChain. Questa guida spiega come configurare e utilizzare questa integrazione per costruire applicazioni LLM avanzate con accesso alla tua base di conoscenza.
Introduzione
LangChain è un framework popolare per costruire applicazioni con modelli di linguaggio di grandi dimensioni (LLM). Integrando Rememberizer con LangChain, puoi:
Utilizzare la tua base di conoscenza Rememberizer nelle applicazioni RAG (Generazione Aumentata da Recupero)
Creare chatbot con accesso ai tuoi documenti e dati
Costruire sistemi di domande e risposte che sfruttano la tua conoscenza
Sviluppare agenti che possono cercare e ragionare sulle tue informazioni
L'integrazione è disponibile nel modulo langchain_community.retrievers.
qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", # Metodo più semplice - basta inserire tutti i documenti nel prompt retriever=retriever, return_source_documents=True )
Fai una domanda
response = qa_chain.invoke({"query": "Che cos'è RAG nel contesto dell'IA?"})
Stampa la risposta
print(f"Risposta: {response['result']}") print("\nFonti:") for idx, doc in enumerate(response['source_documents']): print(f"{idx+1}. {doc.metadata['name']}")
questions = [ "Che cos'è RAG?", "Come lo utilizzano i modelli di linguaggio di grandi dimensioni?", "Quali sono i limiti di questo approccio?", ]
for question in questions: response = conversation.invoke({"question": question}) print(f"Domanda: {question}") print(f"Risposta: {response['answer']}\n")
Crea recuperatori
rememberizer_retriever = RememberizerRetriever(top_k_results=3) web_retriever = WebResearchRetriever(...) # Configura un altro recuperatore
Crea un insieme con punteggio ponderato
ensemble_retriever = EnsembleRetriever( retrievers=[rememberizer_retriever, web_retriever], weights=[0.7, 0.3] # I risultati di Rememberizer hanno un peso maggiore )
Esamina i risultati di ricerca grezzi prima di passarli a LLM per identificare problemi di recupero
import os
from langchain_community.retrievers import RememberizerRetriever
### Comprendere la Struttura del Documento
Ogni documento restituito dal recuperatore ha:
- `page_content`: Il contenuto testuale del frammento di documento corrispondente
- `metadata`: Informazioni aggiuntive sul documento
Esempio di struttura dei metadati:
```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
### Costruire un Agente Conversazionale con Memoria
Questo esempio crea un agente conversazionale che può mantenere la cronologia delle conversazioni:
```python
import os
from langchain_community.retrievers import RememberizerRetriever
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
## Migliori Pratiche
### Ottimizzazione delle Prestazioni di Recupero
1. **Essere specifici con le query**: Query più specifiche di solito producono risultati migliori
2. **Regolare `top_k_results`**: Iniziare con 3-5 risultati e regolare in base alle esigenze dell'applicazione
3. **Utilizzare finestre di contesto**: Il recuperatore include automaticamente il contesto attorno ai frammenti corrispondenti
### Considerazioni sulla Sicurezza
1. **Proteggi la tua chiave API**: Conservala in modo sicuro utilizzando variabili di ambiente o strumenti di gestione dei segreti
2. **Crea chiavi dedicate**: Crea chiavi API separate per diverse applicazioni
3. **Ruota le chiavi regolarmente**: Genera periodicamente nuove chiavi e dismetti quelle vecchie
### Modelli di integrazione
1. **Elaborazione pre-retrieval**: Considera di preprocessare le query degli utenti per migliorare la rilevanza della ricerca
2. **Filtraggio post-retrieval**: Filtra o classifica i documenti recuperati prima di passarli al LLM
3. **Ricerca ibrida**: Combina Rememberizer con altri recuperatori utilizzando `EnsembleRetriever`
```python
from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import RememberizerRetriever, WebResearchRetriever
## Risoluzione dei problemi
### Problemi comuni
1. **Errori di autenticazione**: Verifica che la tua chiave API sia corretta e configurata correttamente
2. **Nessun risultato restituito**: Assicurati che il tuo Common Knowledge contenga informazioni pertinenti
3. **Limitazione della velocità**: Fai attenzione ai limiti di velocità dell'API per applicazioni ad alto volume
### Suggerimenti per il Debug
- Imposta la modalità di debug di LangChain per vedere le chiamate API dettagliate:
```python
import langchain
langchain.debug = True