Situs Resmi • Dokumentasi • Discord
BARU: Berlangganan ke milis kami untuk pembaruan dan berita!
Indox Retrieval Augmentation adalah aplikasi inovatif yang dirancang untuk menyederhanakan ekstraksi informasi dari berbagai jenis dokumen, termasuk file teks, PDF, HTML, Markdown, dan LaTeX. Baik terstruktur maupun tidak terstruktur, Indox memberi pengguna perangkat canggih untuk mengekstrak data relevan secara efisien.
Indox Retrieval Augmentation adalah aplikasi inovatif yang dirancang untuk menyederhanakan ekstraksi informasi dari berbagai jenis dokumen, termasuk file teks, PDF, HTML, Markdown, dan LaTeX. Baik terstruktur maupun tidak terstruktur, Indox memberi pengguna perangkat canggih untuk mengekstrak data relevan secara efisien. Salah satu fitur utamanya adalah kemampuan mengelompokkan potongan-potongan utama secara cerdas untuk membentuk pengelompokan yang lebih kuat, sehingga meningkatkan kualitas dan relevansi informasi yang diekstraksi. Dengan fokus pada kemampuan beradaptasi dan desain yang berpusat pada pengguna, Indox bertujuan untuk menghadirkan fungsionalitas masa depan dengan lebih banyak fitur yang direncanakan untuk rilis mendatang. Bergabunglah bersama kami dalam menjelajahi bagaimana Indox dapat merevolusi alur kerja pemrosesan dokumen Anda, menghadirkan kejelasan dan pengorganisasian pada kebutuhan pengambilan data Anda.
? Dukungan Model | Diimplementasikan | Keterangan |
---|---|---|
Ollama (misalnya Llama3) | ✅ | Penyematan Lokal dan Model LLM didukung oleh Ollama |
Memeluk Wajah | ✅ | Penyematan Lokal dan Model LLM didukung oleh HuggingFace |
Mistral | ✅ | Penyematan dan Model LLM oleh Cohere |
Google (misalnya Gemini) | ✅ | Penyematan dan Pembuatan Model oleh Google |
OpenAI (misalnya GPT4) | ✅ | Penyematan dan Pembuatan Model oleh OpenAI |
Model yang Didukung Melalui Indox Api | Diimplementasikan | Keterangan |
---|---|---|
Buka Ai | ✅ | Menyematkan dan LLm Model OpenAi Dari Indox Api |
Mistral | ✅ | Penyematan dan LLm Model Mistral Dari Indox Api |
Antropis | Penyematan dan LLm Model Antropik Dari Indox Api |
? Pemuat dan Pemisah | Diimplementasikan | Keterangan |
---|---|---|
PDF sederhana | ✅ | Impor PDF |
Tidak terstrukturIO | ✅ | Impor Data melalui Tidak Terstruktur |
Beban dan Pemisahan Berkelompok | ✅ | Muat pdf dan teks. tambahkan lapisan pengelompokan tambahan |
Fitur RAG | Diimplementasikan | Keterangan |
---|---|---|
Pencarian Hibrid | Pencarian Semantik dikombinasikan dengan Pencarian Kata Kunci | |
Caching Semantik | ✅ | Hasil disimpan dan diambil berdasarkan makna semantik |
Prompt Berkelompok | ✅ | Ambil potongan yang lebih kecil dan lakukan pengelompokan dan peringkasan |
Kain Agen | ✅ | Hasilkan jawaban yang lebih andal, rangking konteks, dan pencarian web jika diperlukan |
Kueri Tingkat Lanjut | Delegasi Tugas Berdasarkan Evaluasi LLM | |
Pemeringkatan ulang | ✅ | Susun ulang hasil berdasarkan konteks untuk hasil yang lebih baik |
Metadata yang Dapat Disesuaikan | Kontrol gratis atas Metadata |
? Bonusnya Keren | Diimplementasikan | Keterangan |
---|---|---|
Dukungan buruh pelabuhan | Indox dapat diterapkan melalui Docker | |
Bagian Depan yang Dapat Disesuaikan | Frontend Indox sepenuhnya dapat dikustomisasi melalui frontend |
☑️ Contoh | Jalankan di Colab |
---|---|
Indox Api (OpenAi) | |
Mistral (Menggunakan Tidak Terstruktur) | |
OpenAi (Menggunakan Clustered Split) | |
Model HuggingFace (Mistral) | |
Ollama | |
Evaluasi dengan IndoxJudge |
Perintah berikut akan menginstal inDox stabil terbaru
pip install Indox
Untuk menginstal versi pengembangan terbaru, Anda dapat menjalankan
pip install git+https://github.com/osllmai/inDox@master
Kloning repositori dan navigasikan ke direktori:
git clone https://github.com/osllmai/inDox.git
cd inDox
Instal paket Python yang diperlukan:
pip install -r requirements.txt
Jika Anda menjalankan proyek ini di IDE lokal Anda, buatlah lingkungan Python untuk memastikan semua dependensi dikelola dengan benar. Anda dapat mengikuti langkah-langkah di bawah ini untuk menyiapkan lingkungan virtual bernama indox
:
python -m venv indox
indox S cripts a ctivate
python3 -m venv indox
source indox/bin/activate
Setelah lingkungan virtual diaktifkan, instal dependensi yang diperlukan dengan menjalankan:
pip install -r requirements.txt
pip install indox
pip install openai
pip install chromadb
Jika Anda menjalankan proyek ini di IDE lokal Anda, buatlah lingkungan Python untuk memastikan semua dependensi dikelola dengan benar. Anda dapat mengikuti langkah-langkah di bawah ini untuk menyiapkan lingkungan virtual bernama 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
Setelah lingkungan virtual diaktifkan, instal dependensi yang diperlukan dengan menjalankan:
pip install -r requirements.txt
Untuk memulai, Anda perlu memuat kunci API dari lingkungan.
import os
from dotenv import load_dotenv
load_dotenv ()
OPENAI_API_KEY = os . environ [ 'OPENAI_API_KEY' ]
Impor kelas yang diperlukan dari paket Indox.
from indox import IndoxRetrievalAugmentation
from indox . llms import OpenAi
from indox . embeddings import OpenAiEmbedding
Buat sebuah instance dari 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"
Di bagian ini, kami memanfaatkan perpustakaan unstructured
untuk memuat dokumen dan membaginya menjadi beberapa bagian berdasarkan judul. Metode ini membantu dalam mengatur dokumen menjadi bagian-bagian yang dapat dikelola untuk diproses lebih lanjut.
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.
Menyimpan potongan dokumen di penyimpanan vektor sangat penting untuk memungkinkan operasi pengambilan dan pencarian yang efisien. Dengan mengonversi data teks menjadi representasi vektor dan menyimpannya di penyimpanan vektor, Anda dapat melakukan pencarian kesamaan dengan cepat dan operasi berbasis vektor lainnya.
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.']
.----------------. .-----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
| | _____ | || | ____ _____ | || | ________ | || | ____ | || | ____ ____ | |
| | |_ _| | || ||_ |_ _| | || | |_ ___ `. | || | .' `. | || | |_ _||_ _| | |
| | | | | || | | | | | || | | | `. | || | / .--. | || | / / | |
| | | | | || | | | | | | || | | | | | | || | | | | | | || | > `' < | |
| | _| |_ | || | _| |_ |_ | || | _| |___.' / | || | `--' / | || | _/ /'` _ | |
| | |_____| | || ||_____|____| | || | |________.' | || | `.____.' | || | |____||____| | |
| | | || | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------' '----------------'