Rumah > Peranti teknologi > AI > Membina Pembantu Bhagavad Gita Ai

Membina Pembantu Bhagavad Gita Ai

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-03-05 11:39:10
asal
898 orang telah melayarinya

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.

Objektif Pembelajaran

  • Melaksanakan kuantisasi binari dalam qdrant untuk pengindeksan vektor efisien memori.
  • Fahami Cara Membina Pembantu Bhagavad Gita AI Menggunakan DeepSeek R1, QDrant, dan Llamaindex untuk pengambilan teks yang cekap.
  • belajar mengoptimumkan pembantu Bhagavad Gita AI dengan Groq untuk respons pertanyaan khusus domain dan pengindeksan dokumen berskala besar.
  • Bina saluran paip RAG menggunakan Llamaindex dan Fastembed Embeddings Local untuk memproses 1,000 halaman Bhagavad Gita.
  • Mengintegrasikan DeepSeek R1 dari inferencing Groq untuk tindak balas masa nyata, rendah latensi.
  • Membangunkan UI Streamlit untuk mempamerkan pandangan berkuasa AI dengan ketelusan pemikiran.
Artikel ini diterbitkan sebagai sebahagian daripada Blogathon Sains Data

Jadual Kandungan DeepSeek R1 vs OpenAI O1 Apakah kuantisasi binari dalam pangkalan data

DeepSeek R1 vs Openai O1
  • DeepSeek R1 mencabar dominasi OpenAI dengan 27x kos API yang lebih rendah dan prestasi hampir par pada penanda aras penalaran. Tidak seperti OpenAI's Openai yang ditutup, model berasaskan langganan ($ 200/bulan), DeepSeek R1 ISFree, Open-source, dan sesuai untuk projek dan percubaan yang sedar bajet.
  • penanda arak arc-agi: [sumber: arc-agi deepseek]
  • DeepSeek: Ketepatan 20.5% (awam), 15.8% (separa swasta).
  • OpenAI: 21% ketepatan (awam), 18% (semi-swasta).
  • Dari pengalaman saya setakat ini, DeepSeek melakukan pekerjaan yang hebat dengan penalaran matematik, kes penggunaan yang berkaitan dengan pengekodan, dan promptan yang menyedari konteks. Namun, OpenAI mengekalkan pengetahuan ingeneral kelebihan, menjadikannya lebih baik untuk aplikasi fakta.
  • Apakah kuantisasi binari dalam pangkalan data vektor?
Kuantisasi binari (BQ) adalah teknik pemampatan pengindeksan QDRANT untuk mengoptimumkan penyimpanan dan pengambilan vektor tinggi dimensi. Dengan menukar vektor titik terapung 32-bit ke dalam nilai binari 1-bit, ia mengurangkan penggunaan memori BY40Xand mempercepat kelajuan carian secara dramatik.

bagaimana ia berfungsi

  • binarization: Vektor dipermudahkan kepada 0s dan 1s berdasarkan ambang (mis., Nilai> 0 menjadi 1).
  • Pengindeksan yang cekap: Algoritma HNSW QDrant menggunakan vektor binari ini untuk carian jiran terdekat (ANN) yang cepat.
  • oversampling: Untuk mengimbangi kelajuan dan ketepatan, BQ mengambil calon tambahan (mis., 200 untuk had 100) dan menyusun semula mereka menggunakan vektor asal.

mengapa ia penting

  • Penyimpanan: Vektor OpenAI 1536-dimensi menyusut dari 6kb hingga 0.1875 kb.
  • Kelajuan: Operasi boolean pada vektor 1-bit melaksanakan lebih cepat, mengurangkan latensi.
  • Skalabiliti: Ideal untuk dataset besar (vektor 1m) dengan minimum ingat tradeoffs.

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.

Membina Pembantu Bhagavad Gita

di bawah adalah carta aliran yang menerangkan bagaimana kita boleh membina pembantu bhagwad gita:

Membina Pembantu Bhagavad Gita Ai

Gambaran keseluruhan seni bina

    Pengingesan data: 900-halaman Bhagavad Gita PDF berpecah kepada ketulan teks.
  • embedding: Model embedding teks-ke-vektor Qdrant Fastembed.
  • vektor db: qdrant dengan embeddings kedai BQ, membolehkan carian milisaat.
  • LLM Inference: DeepSeek R1 melalui Groq LPU menghasilkan tindak balas konteks yang menyedari.
  • ui: Aplikasi Streamlit dengan penglihatan "pemikiran" yang diperkembangkan.
Pelaksanaan langkah demi langkah

Marilah kita ikuti langkah -langkah oleh satu:

langkah1: pemasangan dan persediaan awal

mari kita buat asas saluran paip kami menggunakan Llamaindex. Kami perlu memasang pakej penting termasuk Perpustakaan Llamaindex Core, integrasi kedai vektor QDrant, fastembed untuk embeddings, dan groq untuk akses LLM.

NOTA:

3 Ini adalah proses satu masa.
  • Setelah data disimpan, kita boleh menggunakan nama pengumpulan untuk menjalankan kesimpulan di mana -mana, sama ada pada kod vs, streamlit, atau platform lain.
  • Setelah pemasangan selesai, mari kita mengimport modul yang diperlukan.
!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  
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Step2: Pemprosesan Dokumen dan Embedding

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Buat folder, iaitu, direktori data, dan tambahkan semua dokumen anda di dalamnya. Dalam kes kami, kami memuat turun dokumen Bhagavad Gita dan menyimpannya dalam folder data.

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  
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Step3: Persediaan QDrant dengan kuantisasi binari

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:

  • Mod dalam memori: Menggunakan Lokasi = ": Memori:", yang mewujudkan contoh sementara yang berjalan hanya sekali. 
  • localhost: menggunakan location = "localhost", yang memerlukan menjalankan contoh docker. Anda boleh mengikuti panduan persediaan di sini: Qdrant Quickstart. 
  • Penyimpanan awan: Menyimpan koleksi di awan. Untuk melakukan ini, buat kluster baru, berikan nama kluster, dan menghasilkan kunci API. Salin kunci dan dapatkan URL dari perintah curl.

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
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk
Salin selepas log masuk

Langkah 4: Indeks dokumen

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
)
Salin selepas log masuk
Salin selepas log masuk

Step5: Pipeline Rag dengan DeepSeek R1

Process-1: R- Dapatkan dokumen yang relevan

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  
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Process-2: A- Augmenting Prompt

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Process-3: G- Menjana respons

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
Salin selepas log masuk
Salin selepas log masuk

output: (sintaks: & lt; berfikir> penalaran & lt;/think> respons)

Membina Pembantu Bhagavad Gita Ai

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)
Salin selepas log masuk
Salin selepas log masuk

Membina Pembantu Bhagavad Gita Ai Sekarang bagaimana jika anda perlu menggunakan aplikasi ini sekali lagi? Adakah kita sepatutnya menjalani semua langkah lagi?

Jawapannya tidak.

Step6: Inference Index Saved

Tidak banyak perbezaan dalam apa yang telah anda tulis. Kami akan menggunakan semula fungsi carian dan saluran paip yang sama bersama dengan nama pengumpulan yang kita perlukan untuk menjalankan query_points.

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
)
Salin selepas log masuk
Salin selepas log masuk

Step7: Streamlit ui

Dalam streamlit Selepas setiap soalan pengguna, keadaan disegarkan semula. Untuk mengelakkan menyegarkan seluruh halaman sekali lagi, kami akan menentukan beberapa langkah permulaan di bawah streamlit cache_resource.

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")
Salin selepas log masuk
Pada UI, saya ingin menyimpan alasan di bawah pengeksportan Streamlit, untuk mengambil bahagian penalaran, mari kita gunakan pengindeksan rentetan untuk mengekstrak penalaran dan tindak balas sebenar.

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)) 
Salin selepas log masuk
memulakan sejarah mesej dalam keadaan sesi Streamlit. Butang "sembang yang jelas" di bar sisi membolehkan pengguna menetapkan semula sejarah ini. 

Melangkah melalui mesej yang disimpan dan memaparkannya dalam antara muka seperti sembang. Untuk penolong respons, ia memisahkan proses pemikiran (ditunjukkan dalam bahagian yang boleh diperkembangkan) dari jawapan sebenar menggunakan fungsi extract_thinking_and_answer.

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  
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pautan penting

  • anda boleh mencari kod penuh
  • alternatif bhagavad gita pdf- muat turun
  • Gantikan pemegang tempat "& lt; menggantikan-api-kunci>" dengan kunci anda.

Kesimpulan

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.

Takeaways Key

  • DeepSeek R1 Saingan Terbuka O1 dalam Penalaran pada 1/27 Kos, sesuai untuk tugas-tugas khusus domain seperti analisis Kitab Suci, sementara OpenAI sesuai dengan keperluan pengetahuan yang lebih luas.
  • Memahami pelaksanaan saluran paip RAG dengan contoh kod yang ditunjukkan untuk pemprosesan dokumen, penyimpanan generasi, dan penyimpanan vektor menggunakan Llamaindex dan QDrant.
  • Pengoptimuman penyimpanan vektor yang cekap melalui kuantisasi binari dalam qdrant, membolehkan pemprosesan koleksi dokumen besar sambil mengekalkan prestasi dan ketepatan.
  • Pelaksanaan kejuruteraan segera berstruktur dengan templat yang jelas untuk mengendalikan pertanyaan berbilang bahasa (Bahasa Inggeris, Hindi, Sanskrit) dan menguruskan soalan-soalan yang tidak jelas.
  • ui interaktif menggunakan streamlit, untuk menyimpulkan aplikasi sekali disimpan dalam pangkalan data vektor.
Soalan Lazim

Q1. Adakah kuantisasi binari mengurangkan kualiti jawapan? a. Impak minimum pada ingat! Oversampling Qdrant-oversampling calon-calon teratas menggunakan vektor asal, mengekalkan ketepatan sambil meningkatkan kelajuan 40x dan mengurangkan penggunaan memori sebanyak 97%. Bolehkah Fastembed mengendalikan teks bukan bahasa Inggeris seperti Sanskrit/Hindi?

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? a. DeepSeek R1 menawarkan kos API yang lebih rendah 27x, ketepatan penalaran yang setanding (20.5% vs O1's 21%), dan prestasi pengekodan/domain khusus. Ia sesuai untuk tugas -tugas khusus seperti analisis kitab suci di mana kos dan kepakaran yang terfokus.

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan