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.

Wichtig:

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.

  1. Klicken Sie im Dropdown-Menü „Aus Projekt auswählen “ auf „Vektorindex “.
  2. Wählen Sie eine Verbindung zu einem Milvus, watsonx.dataMilvus oder Elasticsearch Vektorindex aus.
  3. Legen Sie die Details für jede Verbindung fest.
    1. Wenn in Ihren Verbindungsdetails eine Datenbank definiert ist, wird diese automatisch ausgewählt. Wenn keine Datenbank definiert ist, default wird ausgewählt.
    2. Wählen Sie einen Index aus dem Vektorspeicher aus.
    3. 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.
    4. 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.
    5. 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.
  4. 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" 
        }
    }
)
Wichtig:

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
Wichtig:
  • Ü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_number Rolle in Ihre fields_mapping. Experimente ohne diese Zuordnung schlagen während der Initialisierung fehl.

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