Site Oficial • Documentação • Discord
NOVO: Inscreva-se em nossa lista de e-mails para atualizações e novidades!
Indox Retrieval Augmentation é um aplicativo inovador projetado para agilizar a extração de informações de uma ampla variedade de tipos de documentos, incluindo arquivos de texto, PDF, HTML, Markdown e LaTeX. Seja estruturado ou não, o Indox fornece aos usuários um poderoso conjunto de ferramentas para extrair dados relevantes com eficiência.
Indox Retrieval Augmentation é um aplicativo inovador projetado para agilizar a extração de informações de uma ampla variedade de tipos de documentos, incluindo arquivos de texto, PDF, HTML, Markdown e LaTeX. Seja estruturado ou não, o Indox fornece aos usuários um poderoso conjunto de ferramentas para extrair dados relevantes com eficiência. Uma de suas principais características é a capacidade de agrupar blocos primários de forma inteligente para formar agrupamentos mais robustos, melhorando a qualidade e a relevância das informações extraídas. Com foco na adaptabilidade e no design centrado no usuário, a Indox pretende oferecer funcionalidades prontas para o futuro com mais recursos planejados para os próximos lançamentos. Junte-se a nós para explorar como o Indox pode revolucionar seu fluxo de trabalho de processamento de documentos, trazendo clareza e organização às suas necessidades de recuperação de dados.
? Suporte ao modelo | Implementado | Descrição |
---|---|---|
Ollama (por exemplo, Llama3) | ✅ | Incorporação local e modelos LLM desenvolvidos por Ollama |
Abraçando o rosto | ✅ | Incorporação local e modelos LLM desenvolvidos por HuggingFace |
Mistral | ✅ | Incorporação e modelos LLM por Cohere |
Google (por exemplo, Gêmeos) | ✅ | Modelos de incorporação e geração do Google |
OpenAI (por exemplo, GPT4) | ✅ | Modelos de incorporação e geração por OpenAI |
Modelo suportado via Indox Api | Implementado | Descrição |
---|---|---|
OpenAi | ✅ | Incorporação e modelo LLm OpenAi da Indox Api |
Mistral | ✅ | Incorporação e modelo LLm Mistral da API Indox |
Antrópico | Incorporação e modelo antrópico LLm da Indox Api |
? Carregador e Divisor | Implementado | Descrição |
---|---|---|
PDF simples | ✅ | Importar PDF |
IO não estruturado | ✅ | Importar dados por meio de dados não estruturados |
Carga e divisão em cluster | ✅ | Carregue pdf e textos. adicione uma camada extra de cluster |
Recursos do RAG | Implementado | Descrição |
---|---|---|
Pesquisa Híbrida | Pesquisa semântica combinada com pesquisa por palavra-chave | |
Cache Semântico | ✅ | Resultados salvos e recuperados com base no significado semântico |
Prompt agrupado | ✅ | Recuperar pedaços menores e fazer clustering e resumo |
Pano Agente | ✅ | Gere respostas mais confiáveis, classifique o contexto e a pesquisa na web, se necessário |
Consulta Avançada | Delegação de tarefas com base na avaliação LLM | |
Reclassificação | ✅ | Reclassifique os resultados com base no contexto para obter melhores resultados |
Metadados personalizáveis | Controle gratuito sobre metadados |
? Bônus legal | Implementado | Descrição |
---|---|---|
Suporte Docker | Indox pode ser implementado via Docker | |
Interface personalizável | O frontend do Indox é totalmente personalizável através do frontend |
☑️ Exemplos | Execute no Colab |
---|---|
API Indox (OpenAi) | |
Mistral (usando não estruturado) | |
OpenAi (usando divisão em cluster) | |
Modelos HuggingFace (Mistral) | |
Ollama | |
Avalie com IndoxJudge |
O comando a seguir instalará o inDox estável mais recente
pip install Indox
Para instalar a versão de desenvolvimento mais recente, você pode executar
pip install git+https://github.com/osllmai/inDox@master
Clone o repositório e navegue até o diretório:
git clone https://github.com/osllmai/inDox.git
cd inDox
Instale os pacotes Python necessários:
pip install -r requirements.txt
Se você estiver executando este projeto em seu IDE local, crie um ambiente Python para garantir que todas as dependências sejam gerenciadas corretamente. Você pode seguir as etapas abaixo para configurar um ambiente virtual chamado indox
:
python -m venv indox
indox S cripts a ctivate
python3 -m venv indox
source indox/bin/activate
Assim que o ambiente virtual for ativado, instale as dependências necessárias executando:
pip install -r requirements.txt
pip install indox
pip install openai
pip install chromadb
Se você estiver executando este projeto em seu IDE local, crie um ambiente Python para garantir que todas as dependências sejam gerenciadas corretamente. Você pode seguir as etapas abaixo para configurar um ambiente virtual chamado 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
Assim que o ambiente virtual for ativado, instale as dependências necessárias executando:
pip install -r requirements.txt
Para começar, você precisa carregar suas chaves de API do ambiente.
import os
from dotenv import load_dotenv
load_dotenv ()
OPENAI_API_KEY = os . environ [ 'OPENAI_API_KEY' ]
Importe as classes necessárias do pacote Indox.
from indox import IndoxRetrievalAugmentation
from indox . llms import OpenAi
from indox . embeddings import OpenAiEmbedding
Crie uma instância de 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"
Nesta seção, aproveitamos a biblioteca unstructured
para carregar documentos e dividi-los em partes por título. Este método ajuda a organizar o documento em seções gerenciáveis para processamento posterior.
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.
Armazenar pedaços de documentos em um armazenamento vetorial é crucial para permitir operações eficientes de recuperação e pesquisa. Ao converter dados de texto em representações vetoriais e armazená-los em um armazenamento vetorial, você pode realizar pesquisas rápidas de similaridade e outras operações baseadas em vetores.
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.']
.----------------. .-----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| | _____ | || | ____ _____ | || | ________ | || | ____ | || | ____ ____ | |
| | |_ _| | || ||_ |_ _| | || | |_ ___ `. | || | .' `. | || | |_ _||_ _| | |
| | | | | || | | | | | || | | | `. | || | / .--. | || | / / | |
| | | | | || | | | | | | || | | | | | | || | | | | | | || | > `' < | |
| | _| |_ | || | _| |_ |_ | || | _| |___.' / | || | `--' / | || | _/ /'` _ | |
| | |_____| | || ||_____|____| | || | |________.' | || | `.____.' | || | |____||____| | |
| | | || | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------' '----------------'