LlamaIndex (Índice GPT) es un marco de datos para su solicitud de LLM. Construir con LlamaIndex normalmente implica trabajar con el núcleo de LlamaIndex y un conjunto elegido de integraciones (o complementos). Hay dos formas de empezar a construir con LlamaIndex en Python:
Iniciador : llama-index
. Un paquete inicial de Python que incluye el núcleo de LlamaIndex, así como una selección de integraciones.
Personalizado : llama-index-core
. Instale LlamaIndex principal y agregue los paquetes de integración de LlamaIndex elegidos en LlamaHub que sean necesarios para su aplicación. Hay más de 300 paquetes de integración de LlamaIndex que funcionan perfectamente con el núcleo, lo que le permite crear con sus proveedores de LLM, incrustados y de almacenamiento de vectores preferidos.
La biblioteca LlamaIndex Python tiene un espacio de nombres tal que las declaraciones de importación que incluyen core
implican que se está utilizando el paquete principal. Por el contrario, aquellas declaraciones sin core
implican que se está utilizando un paquete de integración.
# 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 (Mecanografiado/Javascript)
Documentación
Gorjeo
Discordia
NOTA : Este README no se actualiza con tanta frecuencia como la documentación. ¡Consulte la documentación anterior para obtener las últimas actualizaciones!
Necesitamos un conjunto de herramientas completo para ayudar a realizar este aumento de datos para los LLM.
Ahí es donde entra LlamaIndex . LlamaIndex es un "marco de datos" para ayudarle a crear aplicaciones LLM. Proporciona las siguientes herramientas:
LlamaIndex proporciona herramientas tanto para usuarios principiantes como para usuarios avanzados. Nuestra API de alto nivel permite a los usuarios principiantes utilizar LlamaIndex para ingerir y consultar sus datos en 5 líneas de código. Nuestras API de nivel inferior permiten a los usuarios avanzados personalizar y ampliar cualquier módulo (conectores de datos, índices, recuperadores, motores de consulta, módulos de reclasificación) para satisfacer sus necesidades.
¿Interesado en contribuir? ¡Se aceptan y recomiendan encarecidamente las contribuciones al núcleo de LlamaIndex, así como las integraciones que se basan en el núcleo! Consulte nuestra Guía de contribuciones para obtener más detalles.
La documentación completa se puede encontrar aquí.
¡Consúltelo para obtener los tutoriales, guías prácticas, referencias y otros recursos más actualizados!
# 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
Los ejemplos se encuentran en la carpeta docs/examples
. Los índices se encuentran en la carpeta indices
(consulte la lista de índices a continuación).
Para crear un índice de tienda de vectores simple 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 crear un índice de tienda de vectores simple utilizando LLM que no sean de OpenAI, por ejemplo, Llama 2 alojado en Replicate, donde puede crear fácilmente un token API de prueba 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" )
De forma predeterminada, los datos se almacenan en la memoria. Para persistir en el disco (en ./storage
):
index . storage_context . persist ()
Para recargar desde el 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 poesía como administrador de paquetes para todos los paquetes de Python. Como resultado, las dependencias de cada paquete de Python se pueden encontrar haciendo referencia al archivo pyproject.toml
en cada una de las carpetas del paquete.
cd < desired-package-folder >
pip install poetry
poetry install --with dev
Referencia a citar si utiliza LlamaIndex en un artículo:
@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}
}