Официальный сайт • Документация • Discord
НОВИНКА: Подпишитесь на нашу рассылку для получения обновлений и новостей!
Indox Retrival Augmentation — это инновационное приложение, предназначенное для оптимизации извлечения информации из широкого спектра типов документов, включая текстовые файлы, PDF, HTML, Markdown и LaTeX. Независимо от того, структурированный или неструктурированный, Indox предоставляет пользователям мощный набор инструментов для эффективного извлечения соответствующих данных.
Indox Retrival Augmentation — это инновационное приложение, предназначенное для оптимизации извлечения информации из широкого спектра типов документов, включая текстовые файлы, PDF, HTML, Markdown и LaTeX. Независимо от того, структурированный или неструктурированный, Indox предоставляет пользователям мощный набор инструментов для эффективного извлечения соответствующих данных. Одной из его ключевых особенностей является способность интеллектуально группировать первичные фрагменты для формирования более надежных группировок, повышая качество и актуальность извлеченной информации. Делая упор на адаптивность и ориентированный на пользователя дизайн, Indox стремится предоставить готовую к будущему функциональность с большим количеством функций, запланированных в следующих выпусках. Присоединяйтесь к нам и узнайте, как Indox может революционизировать ваш рабочий процесс обработки документов, внеся ясность и организацию в ваши потребности в поиске данных.
? Поддержка модели | Реализовано | Описание |
---|---|---|
Оллама (например, Llama3) | ✅ | Локальное встраивание и модели LLM на базе Ollama |
ОбниматьЛицо | ✅ | Локальное встраивание и модели LLM на базе HuggingFace |
Мистраль | ✅ | Модели встраивания и LLM от Cohere |
Google (например, Близнецы) | ✅ | Модели внедрения и генерации от Google |
OpenAI (например, GPT4) | ✅ | Модели внедрения и генерации от OpenAI |
Поддерживаемая модель через Indox API | Реализовано | Описание |
---|---|---|
ОпенАй | ✅ | Встраивание и модель LLm OpenAi из Indox Api |
Мистраль | ✅ | Встраивание и модель LLm Mistral из Indox Api |
антропный | Встраивание и антропная модель LLm из Indox Api |
? Погрузчик и разветвитель | Реализовано | Описание |
---|---|---|
Простой PDF-файл | ✅ | Импортировать PDF-файл |
НеструктурированныйIO | ✅ | Импортируйте данные через неструктурированный |
Кластерная загрузка и разделение | ✅ | Загрузите PDF и тексты. добавить дополнительный слой кластеризации |
Особенности РАГ | Реализовано | Описание |
---|---|---|
Гибридный поиск | Семантический поиск в сочетании с поиском по ключевым словам | |
Семантическое кэширование | ✅ | Результаты сохраняются и извлекаются на основе семантического значения. |
Кластеризованная подсказка | ✅ | Извлекайте более мелкие фрагменты и выполняйте кластеризацию и суммирование. |
Агентская тряпка | ✅ | Сгенерируйте более надежный ответ, ранжируйте контекст и при необходимости выполните поиск в Интернете. |
Расширенные запросы | Делегирование задач на основе оценки LLM | |
Изменение рейтинга | ✅ | Измените ранжирование результатов на основе контекста для улучшения результатов. |
Настраиваемые метаданные | Свободный контроль над метаданными |
? Крутой бонус | Реализовано | Описание |
---|---|---|
Поддержка Докера | Indox можно развернуть через Docker. | |
Настраиваемый интерфейс | Интерфейс Indox полностью настраивается через интерфейс. |
☑️ Примеры | Запустить в Колабе |
---|---|
Индекс API (OpenAi) | |
Мистраль (с использованием неструктурированного) | |
OpenAi (с использованием кластерного разделения) | |
Модели HuggingFace (Мистраль) | |
Оллама | |
Оцените с помощью IndoxJudge |
Следующая команда установит последнюю стабильную версию inDox.
pip install Indox
Чтобы установить последнюю версию разработки, вы можете запустить
pip install git+https://github.com/osllmai/inDox@master
Клонируйте репозиторий и перейдите в каталог:
git clone https://github.com/osllmai/inDox.git
cd inDox
Установите необходимые пакеты Python:
pip install -r requirements.txt
Если вы запускаете этот проект в локальной IDE, создайте среду Python, чтобы обеспечить правильное управление всеми зависимостями. Вы можете выполнить следующие шаги, чтобы настроить виртуальную среду с именем indox
:
python -m venv indox
indox S cripts a ctivate
python3 -m venv indox
source indox/bin/activate
После активации виртуальной среды установите необходимые зависимости, выполнив:
pip install -r requirements.txt
pip install indox
pip install openai
pip install chromadb
Если вы запускаете этот проект в локальной IDE, создайте среду Python, чтобы обеспечить правильное управление всеми зависимостями. Вы можете выполнить следующие шаги, чтобы настроить виртуальную среду с именем indox
:
python -m venv indox
indox_judge S cripts a ctivate
python3 -m venv indox
2. **Activate the virtual environment:**
```bash
source indox/bin/activate
После активации виртуальной среды установите необходимые зависимости, выполнив:
pip install -r requirements.txt
Для начала вам необходимо загрузить ключи API из среды.
import os
from dotenv import load_dotenv
load_dotenv ()
OPENAI_API_KEY = os . environ [ 'OPENAI_API_KEY' ]
Импортируйте необходимые классы из пакета Indox.
from indox import IndoxRetrievalAugmentation
from indox . llms import OpenAi
from indox . embeddings import OpenAiEmbedding
Создайте экземпляр IndoxRetrievalAugmentation.
Indox = IndoxRetrievalAugmentation ()
openai_qa = OpenAiQA ( api_key = OPENAI_API_KEY , model = "gpt-3.5-turbo-0125" )
openai_embeddings = OpenAiEmbedding ( model = "text-embedding-3-small" , openai_api_key = OPENAI_API_KEY )
file_path = "sample.txt"
В этом разделе мы воспользуемся преимуществами unstructured
библиотеки для загрузки документов и разбиения их на фрагменты по заголовкам. Этот метод помогает организовать документ в управляемые разделы для дальнейшей обработки.
from indox . data_loader_splitter import UnstructuredLoadAndSplit
loader_splitter = UnstructuredLoadAndSplit ( file_path = file_path )
docs = loader_splitter . load_and_chunk ()
Starting processing...
End Chunking process.
Хранение фрагментов документов в векторном хранилище имеет решающее значение для обеспечения эффективности операций поиска и поиска. Преобразуя текстовые данные в векторные представления и сохраняя их в векторном хранилище, вы можете выполнять быстрый поиск по сходству и другие операции с векторами.
from indox . vector_stores import ChromaVectorStore
db = ChromaVectorStore ( collection_name = "sample" , embedding = embed_openai )
Indox . connect_to_vectorstore ( db )
Indox . store_in_vectorstore ( docs )
2024-05-14 15:33:04,916 - INFO - Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information.
2024-05-14 15:33:12,587 - INFO - HTTP Request: POST https://api.openai.com/v1/embeddings "HTTP/1.1 200 OK"
2024-05-14 15:33:13,574 - INFO - Document added successfully to the vector store.
Connection established successfully.
query = "how cinderella reach her happy ending?"
retriever = indox . QuestionAnswer ( vector_database = db , llm = openai_qa , top_k = 5 )
retriever . invoke ( query )
2024-05-14 15:34:55,380 - INFO - HTTP Request: POST https://api.openai.com/v1/embeddings "HTTP/1.1 200 OK"
2024-05-14 15:35:01,917 - INFO - HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
'Cinderella reached her happy ending by enduring mistreatment from her step-family, finding solace and help from the hazel tree and the little white bird, attending the royal festival where the prince recognized her as the true bride, and ultimately fitting into the golden shoe that proved her identity. This led to her marrying the prince and living happily ever after.'
retriever . context
["from the hazel-bush. Cinderella thanked him, went to her mother'snngrave and planted the branch on it, and wept so much that the tearsnnfell down on it and watered it. And it grew and became a handsomenntree. Thrice a day cinderella went and sat beneath it, and wept andnnprayed, and a little white bird always came on the tree, and ifnncinderella expressed a wish, the bird threw down to her what shennhad wished for.nnIt happened, however, that the king gave orders for a festival",
'worked till she was weary she had no bed to go to, but had to sleepnnby the hearth in the cinders. And as on that account she alwaysnnlooked dusty and dirty, they called her cinderella.nnIt happened that the father was once going to the fair, and hennasked his two step-daughters what he should bring back for them.nnBeautiful dresses, said one, pearls and jewels, said the second.nnAnd you, cinderella, said he, what will you have. Father',
'face he recognized the beautiful maiden who had danced withnnhim and cried, that is the true bride. The step-mother andnnthe two sisters were horrified and became pale with rage, he,nnhowever, took cinderella on his horse and rode away with her. Asnnthey passed by the hazel-tree, the two white doves cried -nnturn and peep, turn and peep,nnno blood is in the shoe,nnthe shoe is not too small for her,nnthe true bride rides with you,nnand when they had cried that, the two came flying down and',
"to send her up to him, but the mother answered, oh, no, she isnnmuch too dirty, she cannot show herself. But he absolutelynninsisted on it, and cinderella had to be called. She firstnnwashed her hands and face clean, and then went and bowed downnnbefore the king's son, who gave her the golden shoe. Then shennseated herself on a stool, drew her foot out of the heavynnwooden shoe, and put it into the slipper, which fitted like annglove. And when she rose up and the king's son looked at her",
'slippers embroidered with silk and silver. She put on the dressnnwith all speed, and went to the wedding. Her step-sisters and thennstep-mother however did not know her, and thought she must be annforeign princess, for she looked so beautiful in the golden dress.nnThey never once thought of cinderella, and believed that she wasnnsitting at home in the dirt, picking lentils out of the ashes. Thennprince approached her, took her by the hand and danced with her.']
.----------------. .-----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| | _____ | || | ____ _____ | || | ________ | || | ____ | || | ____ ____ | |
| | |_ _| | || ||_ |_ _| | || | |_ ___ `. | || | .' `. | || | |_ _||_ _| | |
| | | | | || | | | | | || | | | `. | || | / .--. | || | / / | |
| | | | | || | | | | | | || | | | | | | || | | | | | | || | > `' < | |
| | _| |_ | || | _| |_ |_ | || | _| |___.' / | || | `--' / | || | _/ /'` _ | |
| | |_____| | || ||_____|____| | || | |________.' | || | `.____.' | || | |____||____| | |
| | | || | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------' '----------------'