Utilizzo delle basi di conoscenza dei negoziatori vettoriali negli esperimenti AutoAI RAG
Una knowledge base di archiviazione vettoriale è un archivio vettoriale pre-indicizzato che contiene incorporamenti di documenti. Il collegamento dei negozi di vettori agli esperimenti AutoAI RAG accelera il recupero ed elimina la necessità di rielaborare i documenti. È possibile aggiungere una knowledge base di Vector Store utilizzando l'interfaccia utente o AutoAI l'SDK.
Milvus e i negozi Elasticsearch vettoriali non supportano raccolte che contengono solo vettori sparsi. È possibile utilizzare raccolte con soli vettori densi o raccolte in cui ogni record include sia un vettore denso che un vettore sparso.
Aggiunta di un archivio vettoriale come base di conoscenza nell'interfaccia utente
È possibile aggiungere una base di conoscenza del negozio vettoriale durante la configurazione dell'esperimento selezionando un indice vettoriale dal proprio progetto.
- Dal menu a tendina Seleziona dal progetto, clicca su Indice vettoriale.
- Selezionare una connessione a un indice Milvus vettoriale Elasticsearch, watsonx.dataMilvus o.
- Definire i dettagli per ciascuna connessione.
- Se nei dettagli della connessione è definito un database, questo viene selezionato automaticamente. Se non è definito alcun database,
defaultviene selezionato. - Seleziona un indice dall'archivio vettoriale.
- Seleziona un modello di incorporamento. Se si utilizza una connessione Milvus con indice vettoriale, è possibile aggiungere solo un modello di incorporamento denso dalla finestra di configurazione. Per aggiungere un modello di incorporamento sparso, è necessario utilizzare l'API.
- Aggiungi una descrizione dettagliata dell'indice che spieghi cosa rappresentano i dati in esso contenuti e il tipo di informazioni che contiene. Ciò è necessario per garantire che i dati possano essere correttamente elaborati e recuperati.
- Specificare i dettagli della mappatura dei campi. Se hai selezionato un AutoAI indice creato in una precedente esecuzione dell'esperimento RAG, la mappatura dei campi viene generata automaticamente.
- Se nei dettagli della connessione è definito un database, questo viene selezionato automaticamente. Se non è definito alcun database,
- Per aggiungere altre raccolte, ripetere i passaggi.
Configurazione di una base di conoscenza di archiviazione vettoriale nel codice
Per utilizzare un archivio vettoriale come base di conoscenza tramite AutoAI l'SDK, fornire le seguenti informazioni:
vector_store_kb1 = VectorStoreKnowledgeBase(
name="product_documentation",
description="Vector store containing product documentation",
connection=DataConnection(connection_asset_id="your-milvus-connection-id-1"), # Replace with your connection asset ID
settings={
"index_name": "product_docs_index",
"fields_mapping": [
{
"role": KnowledgeBaseFieldRole.DOCUMENT_NAME,
"field_name": "doc_id"
},
{
"role": KnowledgeBaseFieldRole.TEXT,
"field_name": "content"
},
{
"role": KnowledgeBaseFieldRole.DENSE_VECTOR_EMBEDDINGS,
"field_name": "vector_embeddings"
}
],
"embeddings": {
"model_id": "ibm/slate-125m-english-rtrvr"
}
}
)
Il modello di incorporamento specificato deve corrispondere a quello utilizzato per creare l'archivio vettoriale.
Associa campi
Utilizza il fields_mapping parametro per mappare i ruoli nel sistema AutoAI RAG ai nomi dei campi effettivi nel tuo archivio vettoriale:
| Ruolo | Descrizione | Esempio Nome campo |
|---|---|---|
dense_vector_embeddings |
Campo di incorporamenti vettoriali densi | vector |
sparse_vector_embeddings |
Campo di incorporamenti vettoriali sparsi (per ricerca ibrida) | sparse_embeddings |
document_name |
Campo identificativo del documento | document_id |
text |
Campo contenuto testo | text |
start_index |
Campo posizione iniziale del blocco | start_index |
sequence_number |
Campo numero sequenza blocco | sequence_number |
- Verifica sempre che i nomi dei campi corrispondano allo schema nel tuo archivio vettoriale. Mappature errate causano errori di recupero.
- Se utilizzi il metodo di recupero finestra, devi includere il
chunk_sequence_numberruolo nel tuofields_mapping. Gli esperimenti senza questa mappatura falliscono durante l'inizializzazione.
Utilizza la ricerca ibrida
È possibile abilitare la ricerca ibrida per le basi di conoscenza dei repository vettoriali. La ricerca ibrida combina il recupero vettoriale denso e sparso per migliorare le prestazioni di recupero.
Seleziona una delle seguenti strategie di ricerca ibrida:
- Ponderato : combina risultati densi e sparsi con una media ponderata.
- Reciprocal Rank Fusion (RRF) : unisce le classifiche provenienti da varie fonti in un unico elenco.
Selezionare un modello vettoriale sparso:
- Per Elasticsearch : un modello ELSER (ad esempio,
.elser_model_2_linux-x86_64) o BM25 - Per Milvus : BM25
Utilizzo di basi di conoscenza con archiviazione vettoriale multipla
È possibile collegare fino a 20 raccolte da un database di archiviazione vettoriale in un unico esperimento. Ecco un esempio di utilizzo di due:
from ibm_watsonx_ai.utils.autoai.knowledge_base import VectorStoreKnowledgeBase
from ibm_watsonx_ai.utils.autoai.enums import KnowledgeBaseFieldRole
from ibm_watsonx_ai.helpers.connections import DataConnection
# Define the first vector store knowledge base reference
vector_store_kb1 = VectorStoreKnowledgeBase(
name="product_documentation",
description="Vector store containing product documentation",
connection=DataConnection(connection_asset_id="your-milvus-connection-id-1"), # Replace with your connection asset ID
settings={
"index_name": "product_docs_index",
"fields_mapping": [
{
"role": KnowledgeBaseFieldRole.DOCUMENT_NAME,
"field_name": "doc_id"
},
{
"role": KnowledgeBaseFieldRole.TEXT,
"field_name": "content"
},
{
"role": KnowledgeBaseFieldRole.DENSE_VECTOR_EMBEDDINGS,
"field_name": "vector_embeddings"
}
],
"embeddings": {
"model_id": "ibm/slate-125m-english-rtrvr"
}
}
)
# Define the second vector store knowledge base reference
vector_store_kb2 = VectorStoreKnowledgeBase(
name="customer_support",
description="Vector store containing customer support data",
connection=DataConnection(connection_asset_id="your-milvus-connection-id-2"), # Replace with your connection asset ID
settings={
"index_name": "support_data_index",
"fields_mapping": [
{
"role": KnowledgeBaseFieldRole.DOCUMENT_NAME,
"field_name": "support_id"
},
{
"role": KnowledgeBaseFieldRole.TEXT,
"field_name": "content"
},
{
"role": KnowledgeBaseFieldRole.DENSE_VECTOR_EMBEDDINGS,
"field_name": "vector_embeddings"
},
{
"role": KnowledgeBaseFieldRole.SPARSE_VECTOR_EMBEDDINGS,
"field_name": "sparse_embeddings"
}
],
"embeddings": {
"model_id": "ibm/slate-125m-english-rtrvr"
},
# Optional: Configure hybrid search with sparse vectors
"hybrid_ranker": {
"sparse_vectors": {
"model_id": "BM25"
}
}
}
)
Esegui l'ottimizzatore RAG con più riferimenti alla base di conoscenza:
run_details = rag_optimizer.run(
knowledge_base_references=[vector_store_kb1, vector_store_kb2],
test_data_references=[test_data_reference]
)
Limitazioni
Le seguenti funzionalità non sono supportate per le basi di conoscenza dei negozi vettoriali:
- Archivi vettoriali Chroma
- Generazione dei dati di prova