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.

Importante:

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.

  1. Dal menu a tendina Seleziona dal progetto, clicca su Indice vettoriale.
  2. Selezionare una connessione a un indice Milvus vettoriale Elasticsearch, watsonx.dataMilvus o.
  3. Definire i dettagli per ciascuna connessione.
    1. Se nei dettagli della connessione è definito un database, questo viene selezionato automaticamente. Se non è definito alcun database, default viene selezionato.
    2. Seleziona un indice dall'archivio vettoriale.
    3. 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.
    4. 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.
    5. 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.
  4. 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" 
        }
    }
)
Importante:

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
Importante:
  • 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_number ruolo nel tuo fields_mapping. Gli esperimenti senza questa mappatura falliscono durante l'inizializzazione.

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