Di dunia AI yang berkembang pesat, model bahasa yang besar mendorong sempadan dalam kelajuan, ketepatan, dan kecekapan kos. Pelepasan DeepSeek R1, model sumber terbuka yang bersaing dengan Openai's O1, adalah topik hangat di ruang AI, terutamanya memandangkan keupayaan kos 27x yang lebih rendah dan keupayaan penalaran yang unggul. Sepasang ini dengan kuantisasi binari QDrant untuk carian vektor yang cekap dan cepat, kami boleh mengindeks lebih daripada 1,000 dokumen halaman. Dalam artikel ini, kami akan membuat pembantu Bhagavad Gita AI, yang mampu mengindeks 1,000 muka surat, menjawab pertanyaan kompleks dalam beberapa saat menggunakan Groq, dan menyampaikan pandangan dengan ketepatan khusus domain.
Jadual Kandungan DeepSeek R1 vs OpenAI O1 Apakah kuantisasi binari dalam pangkalan data
Elakkan kuantisasi binari forlow-dimensi vektor (& lt; 1024), di mana kehilangan maklumat memberi kesan ketepatan. Kuantisasi skalar tradisional (mis., Uint8) mungkin sesuai dengan embeddings yang lebih kecil.
di bawah adalah carta aliran yang menerangkan bagaimana kita boleh membina pembantu bhagwad gita:
Gambaran keseluruhan seni bina
langkah1: pemasangan dan persediaan awal
NOTA:
3 Ini adalah proses satu masa.!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
di sini, kami mengendalikan tugas penting untuk menukar teks mentah ke dalam perwakilan vektor. SimpleDirectoryReader memuat dokumen dari folder yang ditentukan.
import logging import sys import os import qdrant_client from qdrant_client import models from llama_index.core import SimpleDirectoryReader from llama_index.embeddings.fastembed import FastEmbedEmbedding from llama_index.llms.groq import Groq # deep seek r1 implementation
anda boleh memuat turun dokumen ~ 900-halaman Bhagavad Gita di sini: iskconmangaluru
!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
Qdrant's fastembed adalah perpustakaan python yang ringan dan cepat yang direka untuk generasi penyembuhan yang cekap. Ia menyokong model teks popular dan menggunakan berat model kuantitatif bersama -sama dengan runtime ONNX untuk kesimpulan, memastikan prestasi tinggi tanpa kebergantungan berat.
Untuk menukar ketulan teks ke dalam embeddings, kami akan menggunakan fastembed Qdrant. Kami memprosesnya dalam kumpulan 50 dokumen untuk menguruskan memori dengan cekap.
import logging import sys import os import qdrant_client from qdrant_client import models from llama_index.core import SimpleDirectoryReader from llama_index.embeddings.fastembed import FastEmbedEmbedding from llama_index.llms.groq import Groq # deep seek r1 implementation
Masa untuk mengkonfigurasi klien QDrant, pangkalan data vektor kami, dengan tetapan yang dioptimumkan untuk prestasi. Kami membuat koleksi bernama "Bhagavad-Gita" dengan parameter vektor tertentu dan membolehkan kuantisasi binari untuk penyimpanan dan pengambilan yang cekap.
Terdapat tiga cara untuk menggunakan klien qdrant:
Nota Nama koleksi perlu unik, selepas setiap perubahan data ini perlu diubah juga.
data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50
Kami mula -mula memeriksa sama ada koleksi dengan koleksi_name yang ditentukan wujud dalam Qdrant. Jika tidak, maka kami membuat koleksi baru yang dikonfigurasikan untuk menyimpan vektor 1,024 dimensi dan menggunakan persamaan kosinus untuk pengukuran jarak.
Kami mengaktifkan penyimpanan cakera untuk vektor asal dan menggunakan kuantisasi binari, yang memampatkan vektor untuk mengurangkan penggunaan memori dan meningkatkan kelajuan carian. Parameter selalu_ram memastikan bahawa vektor kuantitatif disimpan dalam RAM untuk akses yang lebih cepat.
embed_model = FastEmbedEmbedding(model_name="thenlper/gte-large") for page in range(0, len(texts), BATCH_SIZE): page_content = texts[page:page + BATCH_SIZE] response = embed_model.get_text_embedding_batch(page_content) embeddings.extend(response)
Proses pengindeksan memuat naik dokumen yang diproses dan embeddings mereka kepada QDrant dalam kelompok. Setiap dokumen disimpan bersama perwakilan vektornya, mewujudkan asas pengetahuan yang boleh dicari.
GPU akan digunakan pada tahap ini, dan bergantung pada saiz data, langkah ini mungkin mengambil masa beberapa minit.
collection_name = "bhagavad-gita" client = qdrant_client.QdrantClient( #location=":memory:", url = "QDRANT_URL", # replace QDRANT_URL with your endpoint api_key = "QDRANT_API_KEY", # replace QDRANT_API_KEY with your API keys prefer_grpc=True )
Fungsi carian mengambil pertanyaan pengguna, menukarkannya ke embedding, dan mengambil dokumen yang paling relevan dari QDrant berdasarkan persamaan kosinus. Kami menunjukkan ini dengan pertanyaan sampel mengenai bhagavad-gītā, menunjukkan cara mengakses dan mencetak konteks yang diambil.
!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
Untuk RAG, penting untuk menentukan templat interaksi sistem menggunakan chatprompttemplate. Templat ini mewujudkan pembantu khusus yang berpengetahuan di Bhagavad-Gita, yang mampu memahami pelbagai bahasa (Bahasa Inggeris, Hindi, Sanskrit).
Ia termasuk pemformatan berstruktur untuk suntikan konteks dan pengendalian pertanyaan, dengan arahan yang jelas untuk mengendalikan soalan luar konteks.
import logging import sys import os import qdrant_client from qdrant_client import models from llama_index.core import SimpleDirectoryReader from llama_index.embeddings.fastembed import FastEmbedEmbedding from llama_index.llms.groq import Groq # deep seek r1 implementation
Paip terakhir membawa semuanya bersama dalam sistem kain kohesif. Ia mengikuti corak penjanaan semula pengambilan semula: mengambil dokumen yang relevan, menambahnya dengan template prompt khusus kami, dan menjana respons menggunakan LLM. Di sini untuk LLM kami akan menggunakan DeepSeek R-1 Distill Llama 70 B yang dihoskan di Groq, dapatkan kunci anda dari sini: Groq Console.
data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50
embed_model = FastEmbedEmbedding(model_name="thenlper/gte-large") for page in range(0, len(texts), BATCH_SIZE): page_content = texts[page:page + BATCH_SIZE] response = embed_model.get_text_embedding_batch(page_content) embeddings.extend(response)
Sekarang bagaimana jika anda perlu menggunakan aplikasi ini sekali lagi? Adakah kita sepatutnya menjalani semua langkah lagi?
Jawapannya tidak.
Step6: Inference Index Saved
kami akan menggunakan yang sama di atas dua fungsi dan message_template dalam app.py streamlit.
collection_name = "bhagavad-gita" client = qdrant_client.QdrantClient( #location=":memory:", url = "QDRANT_URL", # replace QDRANT_URL with your endpoint api_key = "QDRANT_API_KEY", # replace QDRANT_API_KEY with your API keys prefer_grpc=True )
Step7: Streamlit ui
ingat apabila pengguna memasuki soalan, fastembed akan memuat turun berat model sekali sahaja, yang sama berlaku untuk groq dan instantiation qdrant.
Jika anda melihat output tindak balas, formatnya & lt; berfikir & gt; penaakulan & lt;/berfikir & gt; Respons.
if not client.collection_exists(collection_name=collection_name): client.create_collection( collection_name=collection_name, vectors_config=models.VectorParams(size=1024, distance=models.Distance.COSINE, on_disk=True), quantization_config=models.BinaryQuantization( binary=models.BinaryQuantizationConfig( always_ram=True, ), ), ) else: print("Collection already exists")
komponen chatbot
for idx in range(0, len(texts), BATCH_SIZE): docs = texts[idx:idx + BATCH_SIZE] embeds = embeddings[idx:idx + BATCH_SIZE] client.upload_collection(collection_name=collection_name, vectors=embeds, payload=[{"context": context} for context in docs]) client.update_collection(collection_name= collection_name, optimizer_config=models.OptimizersConfigDiff(indexing_threshold=20000))
Kod yang tinggal adalah format standard untuk menentukan komponen chatbot dalam Streamlit i.e., pengendalian input yang mewujudkan medan input untuk soalan pengguna. Apabila soalan dikemukakan, ia dipaparkan dan ditambah kepada sejarah mesej. Kini ia memproses soalan pengguna melalui saluran paip RAG sambil menunjukkan pemutar pemuatan. Sambutan dibahagikan kepada proses pemikiran dan komponen jawapan.
!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
Dengan penalaran CombiningDeepseek R1, kuantisasi binari Qdrant, dan saluran paip RAG Llamaindex, kami telah membina pembantu AI yang memberikan responsson 1,000 halaman. Projek ini menggariskan bagaimana LLM khusus domain dan pangkalan data vektor yang dioptimumkan dapat mendemokrasikan akses kepada teks kuno sambil mengekalkan kecekapan kos. Oleh kerana model sumber terbuka terus berkembang, kemungkinan aplikasi AI niche tidak terbatas.
a. Ya! Paip RAG menggunakan embeddings Fastembed dan fleksibiliti bahasa Deepseek R1. Custom Prompts Guide Responses dalam Bahasa Inggeris, Hindi, atau Sanskrit. Manakala anda boleh menggunakan model embedding yang dapat memahami token Hindi, dalam kes kami, token yang digunakan memahami teks Bahasa Inggeris dan Hindi. Q3. mengapa memilih DeepSeek R1 di atas Openai O1?
Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan pada budi bicara penulis.
Atas ialah kandungan terperinci Membina Pembantu Bhagavad Gita Ai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!