Sitio web oficial • Documentación • Discord
NUEVO: ¡Suscríbete a nuestra lista de correo para recibir actualizaciones y noticias!
Indox Retrieval Augmentation es una aplicación innovadora diseñada para agilizar la extracción de información de una amplia gama de tipos de documentos, incluidos archivos de texto, PDF, HTML, Markdown y LaTeX. Ya sea estructurado o no estructurado, Indox proporciona a los usuarios un poderoso conjunto de herramientas para extraer datos relevantes de manera eficiente.
Indox Retrieval Augmentation es una aplicación innovadora diseñada para agilizar la extracción de información de una amplia gama de tipos de documentos, incluidos archivos de texto, PDF, HTML, Markdown y LaTeX. Ya sea estructurado o no estructurado, Indox proporciona a los usuarios un poderoso conjunto de herramientas para extraer datos relevantes de manera eficiente. Una de sus características clave es la capacidad de agrupar de forma inteligente fragmentos primarios para formar agrupaciones más sólidas, mejorando la calidad y relevancia de la información extraída. Con un enfoque en la adaptabilidad y el diseño centrado en el usuario, Indox tiene como objetivo ofrecer funcionalidades preparadas para el futuro con más funciones planificadas para próximos lanzamientos. Únase a nosotros para explorar cómo Indox puede revolucionar su flujo de trabajo de procesamiento de documentos, aportando claridad y organización a sus necesidades de recuperación de datos.
? Soporte de modelo | Implementado | Descripción |
---|---|---|
Ollama (por ejemplo, Llama3) | ✅ | Modelos de incrustación local y LLM impulsados por Ollama |
AbrazosCara | ✅ | Modelos LLM y de incrustación local impulsados por HuggingFace |
Mistral | ✅ | Modelos de incrustación y LLM de Cohere |
Google (por ejemplo, Géminis) | ✅ | Modelos de incrustación y generación de Google |
OpenAI (por ejemplo, GPT4) | ✅ | Modelos de integración y generación por OpenAI |
Modelo compatible a través de Indox Api | Implementado | Descripción |
---|---|---|
AbiertoAi | ✅ | Incrustación y modelo LLm OpenAi de Indox Api |
Mistral | ✅ | Incrustación y modelo LLm Mistral de Indox Api |
antrópico | Modelo antrópico de incrustación y LLm de Indox Api |
? Cargador y divisor | Implementado | Descripción |
---|---|---|
PDF sencillo | ✅ | Importar PDF |
IO no estructurado | ✅ | Importar datos a través de no estructurados |
Carga agrupada y división | ✅ | Cargar pdf y textos. agregar una capa de agrupación adicional |
Características del trapo | Implementado | Descripción |
---|---|---|
Búsqueda híbrida | Búsqueda semántica combinada con búsqueda por palabras clave | |
Almacenamiento en caché semántico | ✅ | Resultados guardados y recuperados según el significado semántico |
Aviso agrupado | ✅ | Recuperar fragmentos más pequeños y realizar agrupaciones y resúmenes |
Trapo agente | ✅ | Genere respuestas más confiables, clasifique el contexto y la búsqueda web si es necesario |
Consulta avanzada | Delegación de tareas basada en la evaluación LLM | |
Reclasificación | ✅ | Vuelva a clasificar los resultados según el contexto para obtener mejores resultados |
Metadatos personalizables | Control gratuito sobre metadatos |
? Bono genial | Implementado | Descripción |
---|---|---|
Soporte para ventana acoplable | Indox se puede implementar a través de Docker | |
Interfaz personalizable | La interfaz de Indox es totalmente personalizable a través de la interfaz |
☑️ Ejemplos | Ejecutar en Colab |
---|---|
API Indox (OpenAi) | |
Mistral (usando no estructurado) | |
OpenAi (usando división en clústeres) | |
Modelos HuggingFace (Mistral) | |
Ollama | |
Evaluar con IndoxJudge |
El siguiente comando instalará la última versión estable de inDox.
pip install Indox
Para instalar la última versión de desarrollo, puede ejecutar
pip install git+https://github.com/osllmai/inDox@master
Clona el repositorio y navega hasta el directorio:
git clone https://github.com/osllmai/inDox.git
cd inDox
Instale los paquetes de Python necesarios:
pip install -r requirements.txt
Si está ejecutando este proyecto en su IDE local, cree un entorno Python para garantizar que todas las dependencias se administren correctamente. Puede seguir los pasos a continuación para configurar un entorno virtual llamado indox
:
python -m venv indox
indox S cripts a ctivate
python3 -m venv indox
source indox/bin/activate
Una vez activado el entorno virtual, instale las dependencias requeridas ejecutando:
pip install -r requirements.txt
pip install indox
pip install openai
pip install chromadb
Si está ejecutando este proyecto en su IDE local, cree un entorno Python para garantizar que todas las dependencias se administren correctamente. Puede seguir los pasos a continuación para configurar un entorno virtual llamado 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
Una vez activado el entorno virtual, instale las dependencias requeridas ejecutando:
pip install -r requirements.txt
Para comenzar, debe cargar sus claves API desde el entorno.
import os
from dotenv import load_dotenv
load_dotenv ()
OPENAI_API_KEY = os . environ [ 'OPENAI_API_KEY' ]
Importe las clases necesarias del paquete Indox.
from indox import IndoxRetrievalAugmentation
from indox . llms import OpenAi
from indox . embeddings import OpenAiEmbedding
Cree una instancia 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"
En esta sección, aprovechamos la biblioteca unstructured
para cargar documentos y dividirlos en partes por título. Este método ayuda a organizar el documento en secciones manejables para su posterior procesamiento.
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.
Almacenar fragmentos de documentos en un almacén de vectores es crucial para permitir operaciones eficientes de recuperación y búsqueda. Al convertir datos de texto en representaciones vectoriales y almacenarlos en un almacén de vectores, puede realizar búsquedas rápidas de similitudes y otras operaciones basadas en vectores.
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.']
.----------------. .-----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| | _____ | || | ____ _____ | || | ________ | || | ____ | || | ____ ____ | |
| | |_ _| | || ||_ |_ _| | || | |_ ___ `. | || | .' `. | || | |_ _||_ _| | |
| | | | | || | | | | | || | | | `. | || | / .--. | || | / / | |
| | | | | || | | | | | | || | | | | | | || | | | | | | || | > `' < | |
| | _| |_ | || | _| |_ |_ | || | _| |___.' / | || | `--' / | || | _/ /'` _ | |
| | |_____| | || ||_____|____| | || | |________.' | || | `.____.' | || | |____||____| | |
| | | || | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------' '----------------'