Offizielle Website • Dokumentation • Discord
NEU: Abonnieren Sie unsere Mailingliste für Updates und Neuigkeiten!
Indox Retrieval Augmentation ist eine innovative Anwendung zur Optimierung der Informationsextraktion aus einer Vielzahl von Dokumenttypen, darunter Textdateien, PDF, HTML, Markdown und LaTeX. Ob strukturiert oder unstrukturiert, Indox bietet Benutzern ein leistungsstarkes Toolset zur effizienten Extraktion relevanter Daten.
Indox Retrieval Augmentation ist eine innovative Anwendung zur Optimierung der Informationsextraktion aus einer Vielzahl von Dokumenttypen, darunter Textdateien, PDF, HTML, Markdown und LaTeX. Ob strukturiert oder unstrukturiert, Indox bietet Benutzern ein leistungsstarkes Toolset zur effizienten Extraktion relevanter Daten. Eines seiner Hauptmerkmale ist die Fähigkeit, primäre Blöcke intelligent zu gruppieren, um robustere Gruppierungen zu bilden und so die Qualität und Relevanz der extrahierten Informationen zu verbessern. Mit einem Fokus auf Anpassungsfähigkeit und benutzerzentriertem Design möchte Indox zukunftsfähige Funktionen bereitstellen, wobei für kommende Versionen weitere Funktionen geplant sind. Entdecken Sie gemeinsam mit uns, wie Indox Ihren Dokumentenverarbeitungs-Workflow revolutionieren und Ihren Datenabrufanforderungen Klarheit und Organisation verleihen kann.
? Modellunterstützung | Umgesetzt | Beschreibung |
---|---|---|
Ollama (z. B. Llama3) | ✅ | Lokale Einbettung und LLM-Modelle von Ollama |
Umarmendes Gesicht | ✅ | Lokale Einbettung und LLM-Modelle mit Unterstützung von HuggingFace |
Mistral | ✅ | Einbettungs- und LLM-Modelle von Cohere |
Google (z. B. Gemini) | ✅ | Einbettungs- und Generierungsmodelle von Google |
OpenAI (z. B. GPT4) | ✅ | Einbettungs- und Generierungsmodelle von OpenAI |
Unterstütztes Modell über Indox API | Umgesetzt | Beschreibung |
---|---|---|
OpenAi | ✅ | Einbettung und LLm OpenAi-Modell von Indox Api |
Mistral | ✅ | Einbettung und LLm Mistral-Modell von Indox Api |
Anthropisch | Einbettung und LLm Anthropic Model von Indox Api |
? Lader und Splitter | Umgesetzt | Beschreibung |
---|---|---|
Einfaches PDF | ✅ | PDF importieren |
UnstrukturiertesIO | ✅ | Importieren Sie Daten über Unstrukturiert |
Clustered Load und Split | ✅ | PDF und Texte laden. Fügen Sie eine zusätzliche Clustering-Ebene hinzu |
RAG-Funktionen | Umgesetzt | Beschreibung |
---|---|---|
Hybride Suche | Semantische Suche kombiniert mit Schlüsselwortsuche | |
Semantisches Caching | ✅ | Ergebnisse werden basierend auf der semantischen Bedeutung gespeichert und abgerufen |
Geclusterte Eingabeaufforderung | ✅ | Rufen Sie kleinere Blöcke ab und führen Sie Clustering und Zusammenfassung durch |
Agentischer Lappen | ✅ | Generieren Sie bei Bedarf zuverlässigere Antworten, ordnen Sie Kontext und Websuche ein |
Erweiterte Abfragen | Aufgabendelegation basierend auf LLM-Bewertung | |
Neueinstufung | ✅ | Ordnen Sie Ergebnisse basierend auf dem Kontext neu, um bessere Ergebnisse zu erzielen |
Anpassbare Metadaten | Freie Kontrolle über Metadaten |
? Cooler Bonus | Umgesetzt | Beschreibung |
---|---|---|
Docker-Unterstützung | Indox kann über Docker bereitgestellt werden | |
Anpassbares Frontend | Das Frontend von Indox ist über das Frontend vollständig anpassbar |
☑️ Beispiele | In Colab ausführen |
---|---|
Indox-API (OpenAi) | |
Mistral (mit unstrukturiertem) | |
OpenAi (mit Clustered Split) | |
UmarmenGesichtsmodelle(Mistral) | |
Ollama | |
Bewerten Sie mit IndoxJudge |
Der folgende Befehl installiert die neueste stabile Version von inDox
pip install Indox
Um die neueste Entwicklungsversion zu installieren, können Sie Folgendes ausführen:
pip install git+https://github.com/osllmai/inDox@master
Klonen Sie das Repository und navigieren Sie zum Verzeichnis:
git clone https://github.com/osllmai/inDox.git
cd inDox
Installieren Sie die erforderlichen Python-Pakete:
pip install -r requirements.txt
Wenn Sie dieses Projekt in Ihrer lokalen IDE ausführen, erstellen Sie bitte eine Python-Umgebung, um sicherzustellen, dass alle Abhängigkeiten korrekt verwaltet werden. Sie können die folgenden Schritte ausführen, um eine virtuelle Umgebung mit dem Namen indox
einzurichten:
python -m venv indox
indox S cripts a ctivate
python3 -m venv indox
source indox/bin/activate
Sobald die virtuelle Umgebung aktiviert ist, installieren Sie die erforderlichen Abhängigkeiten, indem Sie Folgendes ausführen:
pip install -r requirements.txt
pip install indox
pip install openai
pip install chromadb
Wenn Sie dieses Projekt in Ihrer lokalen IDE ausführen, erstellen Sie bitte eine Python-Umgebung, um sicherzustellen, dass alle Abhängigkeiten korrekt verwaltet werden. Sie können die folgenden Schritte ausführen, um eine virtuelle Umgebung mit dem Namen indox
einzurichten:
python -m venv indox
indox_judge S cripts a ctivate
python3 -m venv indox
2. **Activate the virtual environment:**
```bash
source indox/bin/activate
Sobald die virtuelle Umgebung aktiviert ist, installieren Sie die erforderlichen Abhängigkeiten, indem Sie Folgendes ausführen:
pip install -r requirements.txt
Zunächst müssen Sie Ihre API-Schlüssel aus der Umgebung laden.
import os
from dotenv import load_dotenv
load_dotenv ()
OPENAI_API_KEY = os . environ [ 'OPENAI_API_KEY' ]
Importieren Sie die erforderlichen Klassen aus dem Indox-Paket.
from indox import IndoxRetrievalAugmentation
from indox . llms import OpenAi
from indox . embeddings import OpenAiEmbedding
Erstellen Sie eine Instanz von 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"
In diesem Abschnitt nutzen wir die unstructured
Bibliothek, um Dokumente zu laden und sie nach Titel in Blöcke aufzuteilen. Diese Methode hilft bei der Organisation des Dokuments in überschaubare Abschnitte zur weiteren Verarbeitung.
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.
Das Speichern von Dokumentblöcken in einem Vektorspeicher ist für die Ermöglichung effizienter Abruf- und Suchvorgänge von entscheidender Bedeutung. Durch die Konvertierung von Textdaten in Vektordarstellungen und deren Speicherung in einem Vektorspeicher können Sie schnelle Ähnlichkeitssuchen und andere vektorbasierte Operationen durchführen.
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.']
.----------------. .-----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| | _____ | || | ____ _____ | || | ________ | || | ____ | || | ____ ____ | |
| | |_ _| | || ||_ |_ _| | || | |_ ___ `. | || | .' `. | || | |_ _||_ _| | |
| | | | | || | | | | | || | | | `. | || | / .--. | || | / / | |
| | | | | || | | | | | | || | | | | | | || | | | | | | || | > `' < | |
| | _| |_ | || | _| |_ |_ | || | _| |___.' / | || | `--' / | || | _/ /'` _ | |
| | |_____| | || ||_____|____| | || | |________.' | || | `.____.' | || | |____||____| | |
| | | || | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------' '----------------'