LlamaIndex (Índice GPT) é uma estrutura de dados para seu aplicativo LLM. Construir com LlamaIndex normalmente envolve trabalhar com o núcleo LlamaIndex e um conjunto escolhido de integrações (ou plug-ins). Existem duas maneiras de começar a construir com LlamaIndex em Python:
Iniciante : llama-index
. Um pacote Python inicial que inclui o LlamaIndex principal, bem como uma seleção de integrações.
Personalizado : llama-index-core
. Instale o LlamaIndex principal e adicione os pacotes de integração LlamaIndex escolhidos no LlamaHub que são necessários para seu aplicativo. Existem mais de 300 pacotes de integração LlamaIndex que funcionam perfeitamente com o núcleo, permitindo que você construa com seus provedores preferidos de LLM, incorporação e armazenamento de vetores.
A biblioteca LlamaIndex Python tem namespace de forma que as instruções de importação que incluem core
implicam que o pacote principal está sendo usado. Em contraste, essas declarações sem core
implicam que um pacote de integração está sendo utilizado.
# 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)
Documentação
Discórdia
NOTA : Este README não é atualizado com tanta frequência quanto a documentação. Por favor, verifique a documentação acima para as atualizações mais recentes!
Precisamos de um kit de ferramentas abrangente para ajudar a realizar esse aumento de dados para LLMs.
É aí que entra o LlamaIndex . LlamaIndex é uma "estrutura de dados" para ajudá-lo a construir aplicativos LLM. Ele fornece as seguintes ferramentas:
LlamaIndex fornece ferramentas para usuários iniciantes e avançados. Nossa API de alto nível permite que usuários iniciantes usem o LlamaIndex para ingerir e consultar seus dados em 5 linhas de código. Nossas APIs de nível inferior permitem que usuários avançados personalizem e estendam qualquer módulo (conectores de dados, índices, recuperadores, mecanismos de consulta, módulos de reclassificação) para atender às suas necessidades.
Interessado em contribuir? As contribuições para o núcleo do LlamaIndex, bem como as integrações que se baseiam no núcleo, são aceitas e altamente incentivadas! Consulte nosso Guia de Contribuição para obter mais detalhes.
A documentação completa pode ser encontrada aqui
Confira os tutoriais mais atualizados, guias de procedimentos, referências e outros recursos!
# 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
Os exemplos estão na pasta docs/examples
. Os índices estão na pasta indices
(veja a lista de índices abaixo).
Para construir um índice de armazenamento vetorial simples usando 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 )
Para construir um índice de armazenamento de vetor simples usando LLMs não OpenAI, por exemplo, Llama 2 hospedado no Replicate, onde você pode criar facilmente um token de API de teste gratuito:
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 ,
)
Para consultar:
query_engine = index . as_query_engine ()
query_engine . query ( "YOUR_QUESTION" )
Por padrão, os dados são armazenados na memória. Para persistir no disco (em ./storage
):
index . storage_context . persist ()
Para recarregar do disco:
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 )
Usamos poesia como gerenciador de pacotes para todos os pacotes Python. Como resultado, as dependências de cada pacote Python podem ser encontradas referenciando o arquivo pyproject.toml
em cada uma das pastas do pacote.
cd < desired-package-folder >
pip install poetry
poetry install --with dev
Referência a ser citada se você usar LlamaIndex em um artigo:
@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}
}