LlamaIndex (GPT Index) est un cadre de données pour votre application LLM. Construire avec LlamaIndex implique généralement de travailler avec le noyau de LlamaIndex et un ensemble choisi d'intégrations (ou plugins). Il existe deux façons de commencer à construire avec LlamaIndex en Python :
Entrée : llama-index
. Un package Python de démarrage qui comprend le noyau LlamaIndex ainsi qu'une sélection d'intégrations.
Personnalisé : llama-index-core
. Installez Core LlamaIndex et ajoutez les packages d'intégration LlamaIndex de votre choix sur LlamaHub qui sont requis pour votre application. Il existe plus de 300 packages d'intégration LlamaIndex qui fonctionnent de manière transparente avec le noyau, vous permettant de créer avec vos fournisseurs LLM, d'intégration et de magasins vectoriels préférés.
La bibliothèque LlamaIndex Python est dotée d'un espace de noms tel que les instructions d'importation qui incluent core
impliquent que le package core est utilisé. En revanche, ces déclarations sans core
impliquent qu'un package d'intégration est utilisé.
# 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)
Documentation
Gazouillement
Discorde
REMARQUE : Ce README n'est pas mis à jour aussi fréquemment que la documentation. Veuillez consulter la documentation ci-dessus pour les dernières mises à jour !
Nous avons besoin d'une boîte à outils complète pour nous aider à réaliser cette augmentation de données pour les LLM.
C'est là qu'intervient LlamaIndex . LlamaIndex est un « cadre de données » pour vous aider à créer des applications LLM. Il fournit les outils suivants :
LlamaIndex fournit des outils pour les utilisateurs débutants et avancés. Notre API de haut niveau permet aux utilisateurs débutants d'utiliser LlamaIndex pour ingérer et interroger leurs données en 5 lignes de code. Nos API de niveau inférieur permettent aux utilisateurs avancés de personnaliser et d'étendre n'importe quel module (connecteurs de données, index, récupérateurs, moteurs de requête, modules de reclassement) pour répondre à leurs besoins.
Intéressé à contribuer? Les contributions au noyau de LlamaIndex ainsi que les intégrations qui s'appuient sur le noyau sont à la fois acceptées et fortement encouragées ! Consultez notre Guide de contribution pour plus de détails.
La documentation complète peut être trouvée ici
Veuillez y consulter les didacticiels, guides pratiques, références et autres ressources les plus récents !
# 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
Les exemples se trouvent dans le dossier docs/examples
. Les indices se trouvent dans le dossier indices
(voir liste des indices ci-dessous).
Pour créer un index de magasin vectoriel simple à l'aide d'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 )
Pour créer un index de magasin vectoriel simple à l'aide de LLM non OpenAI, par exemple Llama 2 hébergé sur Replicate, où vous pouvez facilement créer un jeton API d'essai gratuit :
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 ,
)
Pour interroger :
query_engine = index . as_query_engine ()
query_engine . query ( "YOUR_QUESTION" )
Par défaut, les données sont stockées en mémoire. Pour conserver sur le disque (sous ./storage
) :
index . storage_context . persist ()
Pour recharger depuis le disque :
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 )
Nous utilisons la poésie comme gestionnaire de packages pour tous les packages Python. Par conséquent, les dépendances de chaque package Python peuvent être trouvées en référençant le fichier pyproject.toml
dans chacun des dossiers du package.
cd < desired-package-folder >
pip install poetry
poetry install --with dev
Référence à citer si vous utilisez LlamaIndex dans un article :
@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}
}