LlamaIndex (GPT Index) ist ein Datenframework für Ihre LLM-Anwendung. Das Erstellen mit LlamaIndex umfasst normalerweise die Arbeit mit dem LlamaIndex-Kern und einem ausgewählten Satz von Integrationen (oder Plugins). Es gibt zwei Möglichkeiten, mit LlamaIndex in Python mit der Erstellung zu beginnen:
Starter : llama-index
. Ein Starter-Python-Paket, das den Kern-LlamaIndex sowie eine Auswahl an Integrationen enthält.
Angepasst : llama-index-core
. Installieren Sie den Kern-LlamaIndex und fügen Sie die von Ihnen ausgewählten LlamaIndex-Integrationspakete auf LlamaHub hinzu, die für Ihre Anwendung erforderlich sind. Es gibt über 300 LlamaIndex-Integrationspakete, die nahtlos mit Core zusammenarbeiten und es Ihnen ermöglichen, mit Ihren bevorzugten LLM-, Einbettungs- und Vektorspeicheranbietern zu erstellen.
Die LlamaIndex-Python-Bibliothek ist so benannt, dass Importanweisungen, die core
enthalten, implizieren, dass das Kernpaket verwendet wird. Im Gegensatz dazu implizieren Aussagen ohne core
, dass ein Integrationspaket verwendet wird.
# typical pattern
from llama_index . core . xxx import ClassABC # core submodule xxx
from llama_index . xxx . yyy import (
SubclassABC ,
) # integration yyy for submodule xxx
# concrete example
from llama_index . core . llms import LLM
from llama_index . llms . openai import OpenAI
LlamaIndex.TS (Typescript/Javascript)
Dokumentation
Zwietracht
HINWEIS : Diese README-Datei wird nicht so häufig aktualisiert wie die Dokumentation. Bitte schauen Sie sich die Dokumentation oben an, um die neuesten Updates zu erhalten!
Wir benötigen ein umfassendes Toolkit, um diese Datenerweiterung für LLMs durchzuführen.
Hier kommt LlamaIndex ins Spiel. LlamaIndex ist ein „Datenframework“, das Sie bei der Erstellung von LLM-Apps unterstützt. Es stellt die folgenden Tools bereit:
LlamaIndex bietet Tools sowohl für Anfänger als auch für fortgeschrittene Benutzer. Unsere High-Level-API ermöglicht es Anfängern, LlamaIndex zu verwenden, um ihre Daten in 5 Codezeilen aufzunehmen und abzufragen. Mit unseren APIs auf niedrigerer Ebene können fortgeschrittene Benutzer jedes Modul (Datenkonnektoren, Indizes, Retriever, Abfrage-Engines, Reranking-Module) an ihre Bedürfnisse anpassen und erweitern.
Sind Sie an einer Mitarbeit interessiert? Beiträge zum LlamaIndex-Kern sowie beitragende Integrationen, die auf dem Kern aufbauen, werden akzeptiert und sind ausdrücklich erwünscht! Weitere Einzelheiten finden Sie in unserem Beitragsleitfaden.
Die vollständige Dokumentation finden Sie hier
Schauen Sie sich hier die aktuellsten Tutorials, Anleitungen, Referenzen und andere Ressourcen an!
# custom selection of integrations to work with core
pip install llama-index-core
pip install llama-index-llms-openai
pip install llama-index-llms-replicate
pip install llama-index-embeddings-huggingface
Beispiele finden Sie im Ordner docs/examples
. Indizes befinden sich im indices
(siehe Liste der Indizes unten).
So erstellen Sie einen einfachen Vektorspeicherindex mit OpenAI:
import os
os . environ [ "OPENAI_API_KEY" ] = "YOUR_OPENAI_API_KEY"
from llama_index . core import VectorStoreIndex , SimpleDirectoryReader
documents = SimpleDirectoryReader ( "YOUR_DATA_DIRECTORY" ). load_data ()
index = VectorStoreIndex . from_documents ( documents )
So erstellen Sie einen einfachen Vektorspeicherindex mit Nicht-OpenAI-LLMs, z. B. Llama 2, gehostet auf Replicate, wo Sie ganz einfach ein kostenloses Test-API-Token erstellen können:
import os
os . environ [ "REPLICATE_API_TOKEN" ] = "YOUR_REPLICATE_API_TOKEN"
from llama_index . core import Settings , VectorStoreIndex , SimpleDirectoryReader
from llama_index . embeddings . huggingface import HuggingFaceEmbedding
from llama_index . llms . replicate import Replicate
from transformers import AutoTokenizer
# set the LLM
llama2_7b_chat = "meta/llama-2-7b-chat:8e6975e5ed6174911a6ff3d60540dfd4844201974602551e10e9e87ab143d81e"
Settings . llm = Replicate (
model = llama2_7b_chat ,
temperature = 0.01 ,
additional_kwargs = { "top_p" : 1 , "max_new_tokens" : 300 },
)
# set tokenizer to match LLM
Settings . tokenizer = AutoTokenizer . from_pretrained (
"NousResearch/Llama-2-7b-chat-hf"
)
# set the embed model
Settings . embed_model = HuggingFaceEmbedding (
model_name = "BAAI/bge-small-en-v1.5"
)
documents = SimpleDirectoryReader ( "YOUR_DATA_DIRECTORY" ). load_data ()
index = VectorStoreIndex . from_documents (
documents ,
)
Zur Abfrage:
query_engine = index . as_query_engine ()
query_engine . query ( "YOUR_QUESTION" )
Standardmäßig werden Daten im Speicher gespeichert. So bleiben Sie auf der Festplatte (unter ./storage
):
index . storage_context . persist ()
Um von der Festplatte neu zu laden:
from llama_index . core import StorageContext , load_index_from_storage
# rebuild storage context
storage_context = StorageContext . from_defaults ( persist_dir = "./storage" )
# load index
index = load_index_from_storage ( storage_context )
Wir verwenden Poetry als Paketmanager für alle Python-Pakete. Daher können die Abhängigkeiten jedes Python-Pakets gefunden werden, indem auf die Datei pyproject.toml
in jedem Ordner des Pakets verwiesen wird.
cd < desired-package-folder >
pip install poetry
poetry install --with dev
Referenz zum Zitieren, wenn Sie LlamaIndex in einer Arbeit verwenden:
@software{Liu_LlamaIndex_2022,
author = {Liu, Jerry},
doi = {10.5281/zenodo.1234},
month = {11},
title = {{LlamaIndex}},
url = {https://github.com/jerryjliu/llama_index},
year = {2022}
}