在AI的快速發展世界中,大型語言模型正在以速度,準確性和成本效益來推動界限。 DeepSeek R1最近發布的開源模型與Openai的O1相抗衡,是AI領域中的熱門話題,尤其是考慮到其成本較低的27倍和卓越的推理能力。將其與QDRANT的二進制量化配對,以進行高效和快速的向量搜索,我們可以將超過1,000頁文檔索引。在本文中,我們將創建一個Bhagavad Gita AI助手,能夠索引1,000頁,使用GROQ在幾秒鐘內回答複雜的查詢,並提供具有特定於域的精度的見解。
>
學習目標>本文是> > data Science Blogathon的一部分。 內容表
deepSeek r1 vs openai o1
數據攝入:900頁的Bhagavad gita pdf分為文本塊。 嵌入:QDrant Fastembed的文本對矢量嵌入模型。
>向量DB:帶有BQ商店嵌入的QDRANT,啟用毫秒搜索。>對於文檔索引,我們將使用COLAB的A
完成安裝後,讓我們導入所需的模塊。
!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的快感是一個輕巧,快速的Python庫,旨在有效地嵌入生成。它支持流行的文本模型,並利用量化的模型權重以及推理的ONNX運行時,確保高性能而沒有較重的依賴性。
要將文本塊轉換為嵌入,我們將使用Qdrant的快速介紹。我們分批處理50個文檔以有效地管理內存。
>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
>是時候配置我們的矢量數據庫QDRANT客戶端,並具有優化的性能設置。我們創建了一個名為“ Bhagavad-Gita”的集合,該集合具有特定的向量參數,並啟用了二進制量化以進行有效的存儲和檢索。
有三種使用QDRANT客戶端的方法:
>我們首先檢查帶有指定Collection_name的集合是否存在於Qdrant中。如果不是這樣,只有然後我們創建一個配置為存儲1,024維向量的新集合,並使用餘弦相似性進行距離測量。
data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50>我們為原始向量啟用了盤存存儲,並應用二進制量化,這會壓縮向量以減少內存使用量並提高搜索速度。 Elwand_RAM參數可確保將量化的向量保存在RAM中以更快地訪問。
step4:索引文檔
索引過程將我們的處理過的文檔及其嵌入到批處理中。每個文檔都與其向量表示並存,創建一個可搜索的知識庫。
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)在此階段將使用GPU,根據數據大小,此步驟可能需要幾分鐘。
的抹布管道
process-1:r-檢索相關文檔>搜索功能採用用戶查詢,將其轉換為嵌入,並根據余弦相似性從Qdrant中檢索最相關的文檔。我們通過有關Bhagavad-Gītā的示例查詢進行了證明,展示瞭如何訪問和打印檢索到的上下文。
!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
對於抹布,使用chatprompttemplate定義系統的交互模板很重要。該模板創建了一個專業的助手,在Bhagavad-Gita中知識淵博,能夠理解多種語言(英語,印地語,梵語)。
答案是否。 step6:保存的索引推理
step7:簡化UI >
如果您注意到響應輸出,則格式為< think>推理</think>響應。 聊天機器人組件 >在Sparlit的會話狀態中初始化消息歷史記錄。側邊欄中的“清晰聊天”按鈕使用戶可以重置此歷史記錄。 剩下的代碼是一種標準格式,用於在簡化中定義聊天機器人組件,即輸入處理為用戶問題創建輸入字段。提交問題時,將顯示並將其添加到消息歷史記錄中。現在,它可以通過RAG管道處理用戶的問題,同時顯示加載旋轉器。響應分為思考過程和回答組件。 鑰匙要點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
process-3:g-生成響應
>最終管道將所有內容融合在一起。它遵循檢索儀式生成模式:檢索相關文檔,使用我們的專業及時模板增強它們,並使用LLM生成響應。在這裡,我們將使用deepSeek r-1蒸餾羊lama 70 B託管在Groq上,從這裡獲取您的鑰匙:Groq Console。 data = SimpleDirectoryReader("data").load_data()
texts = [doc.text for doc in data]
embeddings = []
BATCH_SIZE = 50
output :(語法:< think>推理</think>響應)
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)
>您已經編寫的內容沒有太大差異。我們將重複使用相同的搜索和管道功能以及我們需要運行query_points的收集名稱。
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
)
請記住,當用戶輸入問題時,快速培訓將僅下載一次模型權重,GROQ和QDRANT INTANTITION也是如此。 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")
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))
>通過存儲的消息迭代並在類似聊天的接口中顯示它們。對於助手響應,它使用extract_thinking_and_answer函數將思維過程(如可擴展部分顯示)與實際答案分開。
!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
重要鏈接
結論
通過將Deepseek R1的推理,QDRANT的二進制量化和LlamainDex的RAG管道結合起來,我們建立了一個AI助手,該AI助手交出了Seviressub-2-Second Second Secondson 1,000頁。該項目強調了特定於領域的LLM和優化的向量數據庫如何使對古代文本的訪問民主化,同時保持成本效率。隨著開源模型的不斷發展,利基AI應用程序的可能性是無限的。
DeepSeek R1競爭對手Openai O1以1/27的成本推理,非常適合特定於領域的任務,例如聖經分析,而OpenAI適合更廣泛的知識需求。
使用llamaindex和qdrant的文檔處理,嵌入生成和矢量存儲的演示代碼示例了解抹布管道實現。
以上是建立一名博伽梵歌AI助手的詳細內容。更多資訊請關注PHP中文網其他相關文章!