Verwendung von Vektorspeicher-Wissensdatenbanken in AutoAI RAG-Experimenten
Eine Vektorspeicher-Wissensdatenbank ist ein vorindizierter Vektorspeicher, der Dokument-Embeddings enthält. Die Verbindung von Vektorspeichern mit AutoAI RAG-Experimenten beschleunigt den Abruf und macht eine erneute Verarbeitung von Dokumenten überflüssig. Sie können eine Vektorspeicher-Wissensdatenbank über die Benutzeroberfläche oder das AutoAI SDK hinzufügen.
Milvus und Elasticsearch Vektorspeicher unterstützen keine Sammlungen, die nur spärliche Vektoren enthalten. Sie können Sammlungen nur mit dichten Vektoren oder Sammlungen verwenden, in denen jeder Datensatz sowohl einen dichten Vektor als auch einen spärlichen Vektor enthält.
Hinzufügen eines Vektorspeichers als Wissensdatenbank in der Benutzeroberfläche
Sie können während der Versuchseinrichtung eine Vektor-Speicher-Wissensdatenbank hinzufügen, indem Sie einen Vektorindex aus Ihrem Projekt auswählen.
- Klicken Sie im Dropdown-Menü „Aus Projekt auswählen “ auf „Vektorindex “.
- Wählen Sie eine Verbindung zu einem Milvus, watsonx.dataMilvus oder Elasticsearch Vektorindex aus.
- Legen Sie die Details für jede Verbindung fest.
- Wenn in Ihren Verbindungsdetails eine Datenbank definiert ist, wird diese automatisch ausgewählt. Wenn keine Datenbank definiert ist,
defaultwird ausgewählt. - Wählen Sie einen Index aus dem Vektorspeicher aus.
- Wählen Sie ein Einbettungsmodell aus. Wenn Sie eine Milvus Vektorindexverbindung verwenden, können Sie im Einstellungsfenster nur ein dichtes Einbettungsmodell hinzufügen. Um ein spärliches Einbettungsmodell hinzuzufügen, müssen Sie die API verwenden.
- Fügen Sie eine detaillierte Indexbeschreibung hinzu, die erklärt, was die Daten im Index darstellen und welche Art von Informationen sie enthalten. Dies ist erforderlich, um sicherzustellen, dass die Daten korrekt verarbeitet und abgerufen werden können.
- Geben Sie die Details zur Feldzuordnung an. Wenn Sie einen AutoAI Index ausgewählt haben, der in einem früheren RAG-Experimentlauf erstellt wurde, wird die Feldzuordnung automatisch generiert.
- Wenn in Ihren Verbindungsdetails eine Datenbank definiert ist, wird diese automatisch ausgewählt. Wenn keine Datenbank definiert ist,
- Um weitere Sammlungen hinzuzufügen, wiederholen Sie die Schritte.
Konfigurieren einer Vektorspeicher-Wissensdatenbank im Code
Um einen Vektorspeicher mithilfe des AutoAI SDK als Wissensdatenbank zu verwenden, geben Sie die folgenden Informationen an:
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"
}
}
)
Das von Ihnen angegebene Einbettungsmodell muss mit dem Modell übereinstimmen, das zum Erstellen des Vektorspeichers verwendet wurde.
Felder zuordnen
Verwenden Sie den fields_mapping Parameter, um die Rollen im AutoAI RAG-System den tatsächlichen Feldnamen in Ihrem Vektorspeicher zuzuordnen:
| Rolle | Beschreibung | Beispiel Feldname |
|---|---|---|
dense_vector_embeddings |
Feld dichter Vektoreinbettungen | vector |
sparse_vector_embeddings |
Sparse-Vektor-Einbettungen (für hybride Suche) | sparse_embeddings |
document_name |
Dokumentenkennungsfeld | document_id |
text |
Textinhaltsfeld | text |
start_index |
Feld für die Startposition des Chunks | start_index |
sequence_number |
Chunk-Sequenznummernfeld | sequence_number |
- Überprüfen Sie immer, ob Ihre Feldnamen mit dem Schema in Ihrem Vektorspeicher übereinstimmen. Falsche Zuordnungen führen zu Abruffehlern.
- Wenn Sie die Fensterabrufmethode verwenden, müssen Sie die
chunk_sequence_numberRolle in Ihrefields_mapping. Experimente ohne diese Zuordnung schlagen während der Initialisierung fehl.
Hybride Suche verwenden
Sie können die hybride Suche für Vektorspeicher-Wissensdatenbanken aktivieren. Die hybride Suche kombiniert die Suche nach dichten und spärlichen Vektoren, um die Suchleistung zu verbessern.
Wählen Sie eine dieser hybriden Suchstrategien aus:
- Gewichtet : Kombiniert dichte und spärliche Ergebnisse mit einem gewichteten Durchschnitt.
- Reciprocal Rank Fusion (RRF) : Führt Rankings aus verschiedenen Quellen zu einer Liste zusammen.
Wählen Sie ein Sparse-Vektor-Modell aus:
- Für Elasticsearch : ein ELSER-Modell (zum Beispiel )
.elser_model_2_linux-x86_64oder BM25 - Für Milvus : BM25
Verwendung mehrerer Vektorspeicher-Wissensdatenbanken
Sie können bis zu 20 Sammlungen aus einer Vektor-Speicherdatenbank in einem einzigen Experiment verbinden. Hier ist ein Beispiel für die Verwendung von zwei:
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"
}
}
}
)
Führen Sie den RAG-Optimierer mit mehreren Wissensbasisreferenzen aus:
run_details = rag_optimizer.run(
knowledge_base_references=[vector_store_kb1, vector_store_kb2],
test_data_references=[test_data_reference]
)
Einschränkungen
Die folgenden Funktionen werden für Wissensdatenbanken im Vektorspeicher nicht unterstützt:
- Chroma-Vektorspeicher
- Testdatengenerierung