Site officiel • Documentation • Discord
NOUVEAU : Abonnez-vous à notre liste de diffusion pour les mises à jour et les nouvelles !
Indox Retrieval Augmentation est une application innovante conçue pour rationaliser l'extraction d'informations à partir d'un large éventail de types de documents, notamment les fichiers texte, PDF, HTML, Markdown et LaTeX. Qu'elles soient structurées ou non, Indox fournit aux utilisateurs un ensemble d'outils puissants pour extraire efficacement les données pertinentes.
Indox Retrieval Augmentation est une application innovante conçue pour rationaliser l'extraction d'informations à partir d'un large éventail de types de documents, notamment les fichiers texte, PDF, HTML, Markdown et LaTeX. Qu'elles soient structurées ou non, Indox fournit aux utilisateurs un ensemble d'outils puissants pour extraire efficacement les données pertinentes. L'une de ses principales caractéristiques est la capacité de regrouper intelligemment les fragments principaux pour former des regroupements plus robustes, améliorant ainsi la qualité et la pertinence des informations extraites. En mettant l'accent sur l'adaptabilité et la conception centrée sur l'utilisateur, Indox vise à fournir des fonctionnalités prêtes pour l'avenir avec davantage de fonctionnalités prévues pour les versions à venir. Rejoignez-nous pour découvrir comment Indox peut révolutionner votre flux de travail de traitement de documents, en apportant clarté et organisation à vos besoins de récupération de données.
? Prise en charge du modèle | Mis en œuvre | Description |
---|---|---|
Ollama (par exemple Lama3) | ✅ | Modèles d'intégration locale et LLM optimisés par Ollama |
ÉtreindreVisage | ✅ | Modèles d'intégration locale et LLM optimisés par HuggingFace |
Mistral | ✅ | Modèles d'intégration et LLM par Cohere |
Google (par exemple Gémeaux) | ✅ | Modèles d'intégration et de génération par Google |
OpenAI (par exemple GPT4) | ✅ | Modèles d'intégration et de génération par OpenAI |
Modèle pris en charge via Indox Api | Mis en œuvre | Description |
---|---|---|
OpenAi | ✅ | Intégration et modèle LLm OpenAi à partir d'Indox Api |
Mistral | ✅ | Intégration et modèle LLm Mistral d'Indox Api |
Anthropique | Intégration et modèle anthropique LLm d'Indox Api |
? Chargeur et diviseur | Mis en œuvre | Description |
---|---|---|
PDF simple | ✅ | Importer un PDF |
Non structuréIO | ✅ | Importer des données via des données non structurées |
Chargement et fractionnement en cluster | ✅ | Chargez des pdf et des textes. ajouter une couche de clustering supplémentaire |
Caractéristiques du RAG | Mis en œuvre | Description |
---|---|---|
Recherche hybride | Recherche sémantique combinée à la recherche par mot-clé | |
Mise en cache sémantique | ✅ | Résultats enregistrés et récupérés en fonction de leur signification sémantique |
Invite groupée | ✅ | Récupérez des morceaux plus petits et effectuez le clustering et la synthèse |
Chiffon agentique | ✅ | Générez une réponse plus fiable, classez le contexte et effectuez une recherche sur le Web si nécessaire |
Requête avancée | Délégation de tâches basée sur l'évaluation LLM | |
Reclassement | ✅ | Reclassez les résultats en fonction du contexte pour de meilleurs résultats |
Métadonnées personnalisables | Contrôle libre des métadonnées |
? Bonus sympa | Mis en œuvre | Description |
---|---|---|
Prise en charge de Docker | Indox est déployable via Docker | |
Frontend personnalisable | L'interface d'Indox est entièrement personnalisable via l'interface |
☑️ Exemples | Exécuter dans Colab |
---|---|
API Indox (OpenAi) | |
Mistral (utilisation non structurée) | |
OpenAi (utilisation du fractionnement en cluster) | |
Modèles HuggingFace (Mistral) | |
Ollama | |
Évaluer avec IndoxJudge |
La commande suivante installera la dernière version stable d'inDox
pip install Indox
Pour installer la dernière version de développement, vous pouvez exécuter
pip install git+https://github.com/osllmai/inDox@master
Clonez le référentiel et accédez au répertoire :
git clone https://github.com/osllmai/inDox.git
cd inDox
Installez les packages Python requis :
pip install -r requirements.txt
Si vous exécutez ce projet dans votre IDE local, veuillez créer un environnement Python pour vous assurer que toutes les dépendances sont correctement gérées. Vous pouvez suivre les étapes ci-dessous pour configurer un environnement virtuel nommé indox
:
python -m venv indox
indox S cripts a ctivate
python3 -m venv indox
source indox/bin/activate
Une fois l'environnement virtuel activé, installez les dépendances requises en exécutant :
pip install -r requirements.txt
pip install indox
pip install openai
pip install chromadb
Si vous exécutez ce projet dans votre IDE local, veuillez créer un environnement Python pour vous assurer que toutes les dépendances sont correctement gérées. Vous pouvez suivre les étapes ci-dessous pour configurer un environnement virtuel nommé 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
Une fois l'environnement virtuel activé, installez les dépendances requises en exécutant :
pip install -r requirements.txt
Pour commencer, vous devez charger vos clés API depuis l'environnement.
import os
from dotenv import load_dotenv
load_dotenv ()
OPENAI_API_KEY = os . environ [ 'OPENAI_API_KEY' ]
Importez les classes nécessaires à partir du package Indox.
from indox import IndoxRetrievalAugmentation
from indox . llms import OpenAi
from indox . embeddings import OpenAiEmbedding
Créez une instance d'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"
Dans cette section, nous profitons de la bibliothèque unstructured
pour charger des documents et les diviser en morceaux par titre. Cette méthode permet d'organiser le document en sections gérables pour un traitement ultérieur.
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.
Le stockage de morceaux de documents dans un magasin de vecteurs est crucial pour permettre des opérations de récupération et de recherche efficaces. En convertissant les données textuelles en représentations vectorielles et en les stockant dans un magasin de vecteurs, vous pouvez effectuer des recherches rapides de similarité et d'autres opérations vectorielles.
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.']
.----------------. .-----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| | _____ | || | ____ _____ | || | ________ | || | ____ | || | ____ ____ | |
| | |_ _| | || ||_ |_ _| | || | |_ ___ `. | || | .' `. | || | |_ _||_ _| | |
| | | | | || | | | | | || | | | `. | || | / .--. | || | / / | |
| | | | | || | | | | | | || | | | | | | || | | | | | | || | > `' < | |
| | _| |_ | || | _| |_ |_ | || | _| |___.' / | || | `--' / | || | _/ /'` _ | |
| | |_____| | || ||_____|____| | || | |________.' | || | `.____.' | || | |____||____| | |
| | | || | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------' '----------------'