# LlamaIndex
# Einführung
LlamaIndex (GPT Index) ist ein Projekt, das eine zentrale Schnittstelle bereitstellt, um Ihre LLMs mit externen Daten zu verbinden. Weitere Informationen zu LlamaIndex finden Sie auf der LlamaIndex-Dokumentationswebsite (opens new window).
# Voraussetzungen
Bevor wir beginnen, müssen wir das LlamaIndex (opens new window) und den ClickHouse Python-Client (opens new window) installieren.
pip install -U llama-index clickhouse-connect
# Umgebung einrichten
Um OpenAI-Einbettungsmodelle zu verwenden, müssen wir uns bei OpenAI (opens new window) für einen OpenAI-API-Schlüssel anmelden.
export OPENAI_API_KEY="YOUR_OPENAI_API_KEY"
# Daten laden und Index erstellen
Wir werden lokale Textdateien in Llama-Dokumente laden:
from gpt_index import GPTMyScaleIndex, SimpleDirectoryReader
# Dokumente laden
documents = SimpleDirectoryReader("YOUR_PATH_TO_FILE").load_data()
Als nächstes laden wir die Daten in den MyScale-Cluster hoch. Wenn der Index nicht vorhanden ist, wird er erstellt, und wenn er bereits vorhanden ist, wird er wiederverwendet. Weitere Informationen zur Konfiguration Ihres MyScale-Index finden Sie unter MyScaleVectorStore (opens new window).
import clickhouse_connect
# Client initialisieren
client = clickhouse_connect.get_client(
host='YOUR_CLUSTER_HOST',
port=443,
username='YOUR_USERNAME',
password='YOUR_CLUSTER_PASSWORD'
)
from llama_index import VectorStoreIndex, SimpleDirectoryReader
from llama_index.vector_stores import MyScaleVectorStore
from IPython.display import Markdown, display
# Dokumente laden
documents = SimpleDirectoryReader("../data/paul_graham").load_data()
# Index initialisieren
loader = SimpleDirectoryReader("./data/paul_graham/")
documents = loader.load_data()
# Mit Metadatenfilter und Speicherindizes initialisieren
from llama_index.storage.storage_context import StorageContext
for document in documents:
document.metadata = {"user_id": "123", "favorite_color": "blue"}
vector_store = MyScaleVectorStore(myscale_client=client)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(
documents, storage_context=storage_context
)
# MyScale abfragen
Wir können basierend auf der Ähnlichkeitssuche abfragen:
import textwrap
from llama_index.vector_stores.types import ExactMatchFilter, MetadataFilters
# Logging auf DEBUG setzen für detailliertere Ausgaben
query_engine = index.as_query_engine(
filters=MetadataFilters(
filters=[
ExactMatchFilter(key="user_id", value="123"),
]
),
similarity_top_k=2,
vector_store_query_mode="hybrid",
)
response = query_engine.query("What did the author learn?")
print(textwrap.fill(str(response), 100))
# Alle Indizes löschen
Sie können auch Dokumente mit ihren IDs löschen:
for document in documents:
index.delete_ref_doc(document.doc_id)