LlamaIndex (индекс GPT) — это платформа данных для вашего приложения LLM. Создание с помощью LlamaIndex обычно включает работу с ядром LlamaIndex и выбранным набором интеграций (или плагинов). Есть два способа начать сборку с помощью LlamaIndex в Python:
Стартер : llama-index
. Стартовый пакет Python, включающий ядро LlamaIndex, а также ряд интеграций.
По индивидуальному заказу : llama-index-core
. Установите ядро LlamaIndex и добавьте выбранные вами пакеты интеграции LlamaIndex на LlamaHub, необходимые для вашего приложения. Существует более 300 пакетов интеграции LlamaIndex, которые безупречно работают с ядром, что позволяет вам создавать проекты с использованием предпочитаемых вами поставщиков LLM, внедрения и векторных хранилищ.
Библиотека LlamaIndex Python имеет такое пространство имен, что операторы импорта, включающие core
, подразумевают, что используется основной пакет. Напротив, эти утверждения без core
подразумевают, что используется пакет интеграции.
# 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 (Машинопись/Javascript)
Документация
Твиттер
Раздор
ПРИМЕЧАНИЕ . Этот README обновляется не так часто, как документация. Пожалуйста, ознакомьтесь с документацией выше для получения последних обновлений!
Нам нужен комплексный набор инструментов, который поможет выполнить это увеличение данных для LLM.
Вот тут-то и приходит на помощь LlamaIndex . LlamaIndex — это «инфраструктура данных», которая поможет вам создавать приложения LLM. Он предоставляет следующие инструменты:
LlamaIndex предоставляет инструменты как для начинающих, так и для опытных пользователей. Наш высокоуровневый API позволяет начинающим пользователям использовать LlamaIndex для приема и запроса своих данных с помощью 5 строк кода. Наши API-интерфейсы нижнего уровня позволяют опытным пользователям настраивать и расширять любой модуль (соединители данных, индексы, средства извлечения, механизмы запросов, модули переранжирования) в соответствии со своими потребностями.
Хотите внести свой вклад? Вклад в ядро LlamaIndex, а также вклад в интеграцию, основанную на ядре, принимаются и настоятельно поощряются! Более подробную информацию можно найти в нашем Руководстве по вкладам.
Полную документацию можно найти здесь
Пожалуйста, ознакомьтесь с самыми последними руководствами, практическими руководствами, справочными материалами и другими ресурсами!
# 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
Примеры находятся в папке docs/examples
. Индексы находятся в папке indices
(см. список индексов ниже).
Чтобы создать простой индекс векторного хранилища с помощью 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 )
Чтобы создать простой индекс векторного хранилища с использованием LLM, отличных от OpenAI, например Llama 2, размещенного на Replication, где вы можете легко создать бесплатный пробный токен API:
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 ,
)
Чтобы запросить:
query_engine = index . as_query_engine ()
query_engine . query ( "YOUR_QUESTION" )
По умолчанию данные хранятся в памяти. Чтобы сохраниться на диске (в разделе ./storage
):
index . storage_context . persist ()
Чтобы перезагрузить с диска:
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 )
Мы используем поэзию в качестве менеджера пакетов для всех пакетов Python. В результате зависимости каждого пакета Python можно найти, обратившись к файлу pyproject.toml
в каждой из папок пакета.
cd < desired-package-folder >
pip install poetry
poetry install --with dev
Ссылка на ссылку, если вы используете LlamaIndex в статье:
@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}
}