建立一名博伽梵歌AI助手
在AI的快速發展世界中,大型語言模型正在以速度,準確性和成本效益來推動界限。 DeepSeek R1最近發布的開源模型與Openai的O1相抗衡,是AI領域中的熱門話題,尤其是考慮到其成本較低的27倍和卓越的推理能力。將其與QDRANT的二進制量化配對,以進行高效和快速的向量搜索,我們可以將超過1,000頁文檔索引。在本文中,我們將創建一個Bhagavad Gita AI助手,能夠索引1,000頁,使用GROQ在幾秒鐘內回答複雜的查詢,並提供具有特定於域的精度的見解。
>
學習目標- 在qdrant中實現二進制量化,以進行內存效率的向量索引。
- > 了解如何使用DeepSeek R1,Qdrant和Llamaindex建立Bhagavad Gita AI助手進行有效的文本檢索。
- > 學會用GROQ優化Bhagavad Gita AI助手,以快速,域特異性查詢響應和大規模文檔索引。
- > >使用llamaindex和快速培養的本地嵌入來處理1,000頁的Bhagavad Gita。
- 從GROQ的推斷中集成了DeepSeek R1,以實時,低延遲響應。
- >開發一個簡化的UI,以展示具有思維透明度的AI驅動見解。
>本文是> > data Science Blogathon的一部分。 內容表
deepSeek r1 vs openai o1- >在向量數據庫中的二進制量化是什麼? > DeepSeek R1 vs Openai O1
- > DeepSeek R1挑戰OpenAI在27X降低的API成本和接近標準的表現方面的主導地位。與OpenAI的O1關閉,基於訂閱的模型(每月200美元)不同,DeepSeek R1 iSfree,開放源代碼,並且是預算意識的項目和實驗的理想之選。
- > 推理-ARC-AGI基準:[來源:Arc-Agi DeepSeek]
- DeepSeek:20.5%準確性(公共),15.8%(半私有)。
- OpenAI:21%準確性(公共),18%(半私人)。
- 從我到目前為止的經驗來看,DeepSeek在數學推理,與編碼相關的用例和上下文感知的提示方面做得很好。
二進制量化(BQ)是QDRANT的索引壓縮技術,可優化高維矢量存儲和檢索。通過將32位浮點矢量轉換為1位二進制值,它可以大幅度加速搜索速度。
它的工作原理
- 二進制:基於閾值將向量簡化為0s和1s(例如,值> 0成為1)。 >有效索引:QDRANT的HNSW算法使用這些二進制向量快速近似最近的鄰居(ANN)搜索。
- >過採樣:為了平衡速度和準確性,BQ檢索額外的候選者(例如200限制為100),並使用原始向量將它們對其進行重新排名。
- >
存儲:1536-Dimension Openai矢量從6KB縮小到0.1875 kb。
- 速度:1位向量上的布爾操作執行更快,減少了延遲。
- 可伸縮性:適合大型數據集(1M向量)的理想選擇,以最少的召回權衡。
- 避免二進制量化,以實現二量矢量(< 1024),其中信息損失顯著影響準確性。傳統的標量量化(例如,UINT8)可能更適合較小的嵌入。
- 建造Bhagavad Gita Assistant 下面的
架構概述
數據攝入:900頁的Bhagavad gita pdf分為文本塊。 嵌入:QDrant Fastembed的文本對矢量嵌入模型。
>向量DB:帶有BQ商店嵌入的QDRANT,啟用毫秒搜索。-
LLM推斷:DeepSeek R1通過GROQ LPU生成上下文感知的響應。
- UI:簡化具有可擴展的“思考過程”可見性的應用程序。
- >逐步實現
- >讓我們現在按一個步驟操作:
- >讓我們使用LlamainDex建立抹布管道的基礎。我們需要安裝必需軟件包,包括核心Llamaindex庫,QDRANT矢量商店集成,快速嵌入的嵌入以及用於LLM訪問的GROQ。
- 注意:
>
>對於文檔索引,我們將使用COLAB的A
>
>保存數據後,我們可以使用集合名稱在任何地方運行推斷,無論是在VS代碼,簡化還是其他平台上。
完成安裝後,讓我們導入所需的模塊。
- >在這裡,我們處理將原始文本轉換為向量表示的關鍵任務。 SimpleDirectoryReader從指定的文件夾加載文檔。
- > >創建一個文件夾,即數據目錄,然後在其中添加所有文檔。在我們的情況下,我們下載了Bhagavad Gita文檔並將其保存在數據文件夾中。 您可以在此處下載〜900頁的Bhagavad Gita文檔: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的快感是一個輕巧,快速的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
登入後複製登入後複製步驟3:使用二進制量化的QDRANT設置
>是時候配置我們的矢量數據庫QDRANT客戶端,並具有優化的性能設置。我們創建了一個名為“ Bhagavad-Gita”的集合,該集合具有特定的向量參數,並啟用了二進制量化以進行有效的存儲和檢索。
有三種使用QDRANT客戶端的方法:- >內存模式:使用位置=“:內存:”,它創建了一個僅運行一次的臨時實例。
- > localhost:使用位置=“ localhost”,它需要運行Docker實例。您可以在此處遵循“設置指南:QDRANT QUICKSTART”。
- 雲存儲:將集合存儲在雲中。為此,創建一個新的群集,提供群集名稱並生成一個API鍵。複製鍵並從curl命令中檢索URL。
- 請注意,收集名稱必須是唯一的,在每個數據更改之後,此也需要更改。
>我們首先檢查帶有指定Collection_name的集合是否存在於Qdrant中。如果不是這樣,只有然後我們創建一個配置為存儲1,024維向量的新集合,並使用餘弦相似性進行距離測量。
>我們為原始向量啟用了盤存存儲,並應用二進制量化,這會壓縮向量以減少內存使用量並提高搜索速度。 Elwand_RAM參數可確保將量化的向量保存在RAM中以更快地訪問。data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50
登入後複製登入後複製> > 在此階段將使用GPU,根據數據大小,此步驟可能需要幾分鐘。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)
登入後複製登入後複製的抹布管道
process-1:r-檢索相關文檔!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
登入後複製登入後複製登入後複製Process-2:A-增強提示
對於抹布,使用chatprompttemplate定義系統的交互模板很重要。該模板創建了一個專業的助手,在Bhagavad-Gita中知識淵博,能夠理解多種語言(英語,印地語,梵語)。
>它包括用於上下文注入和查詢處理的結構化格式,並清楚地說明了處理外面問題的明確說明。 process-3:g-生成響應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
登入後複製登入後複製output :(語法:< think>推理</think>響應)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)
登入後複製登入後複製答案是否。
step6:保存的索引推理
>您已經編寫的內容沒有太大差異。我們將重複使用相同的搜索和管道功能以及我們需要運行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 )
登入後複製step7:簡化UI
在每個用戶問題之後,在精簡中,狀態都會刷新。為了避免再次刷新整個頁面,我們將在簡化的cache_resource下定義一些初始化步驟。>
如果您注意到響應輸出,則格式為< think>推理</think>響應。
在UI上,我想保留在簡化的擴展器下的推理,以檢索推理部分,讓我們使用字符串索引來提取推理和實際響應。> 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")
登入後複製聊天機器人組件
>在Sparlit的會話狀態中初始化消息歷史記錄。側邊欄中的“清晰聊天”按鈕使用戶可以重置此歷史記錄。
>通過存儲的消息迭代並在類似聊天的接口中顯示它們。對於助手響應,它使用extract_thinking_and_answer函數將思維過程(如可擴展部分顯示)與實際答案分開。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))
登入後複製剩下的代碼是一種標準格式,用於在簡化中定義聊天機器人組件,即輸入處理為用戶問題創建輸入字段。提交問題時,將顯示並將其添加到消息歷史記錄中。現在,它可以通過RAG管道處理用戶的問題,同時顯示加載旋轉器。響應分為思考過程和回答組件。
!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
登入後複製登入後複製登入後複製重要鏈接
- 您可以找到完整的代碼
- >替代性bhagavad gita pdf-下載
- >用鑰匙替換“< replace-api-key>”佔位符。
結論
通過將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的文檔處理,嵌入生成和矢量存儲的演示代碼示例了解抹布管道實現。通過QDRANT中的二進制量化,有效的矢量存儲優化,從而可以處理大型文檔收集,同時保持性能和準確性。 - >結構化的及時工程實施,具有清晰的模板來處理多語言查詢(英語,印地語,梵語)並有效地管理外面的問題。 > 使用簡化的交互式UI,以推導一旦存儲在矢量數據庫中的應用程序。
- 常見問題
- > Q1。
- 二進制量化會降低答案質量嗎?對召回的影響最小! Qdrant的過採樣採樣使用原始矢量重新排名最高的候選者,保持準確性,同時提高速度40倍,並將內存使用量減少97%。 >快速培養的可以處理諸如梵文/印地語的非英語文本?
> Q3。 為什麼選擇DeepSeek R1而不是OpenAi O1? DeepSeek R1的API成本降低了27倍,推理精度(20.5%vs 21%)以及卓越的編碼/特定於域的性能。它是經文分析等專業任務的理想選擇。 >本文所示的媒體不歸Analytics Vidhya擁有,並由作者的酌情決定使用。
以上是建立一名博伽梵歌AI助手的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

嘿,編碼忍者!您當天計劃哪些與編碼有關的任務?在您進一步研究此博客之前,我希望您考慮所有與編碼相關的困境,這是將其列出的。 完畢? - 讓&#8217

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變

Shopify首席執行官TobiLütke最近的備忘錄大膽地宣布AI對每位員工的基本期望是公司內部的重大文化轉變。 這不是短暫的趨勢。這是整合到P中的新操作範式

介紹 想像一下,穿過美術館,周圍是生動的繪畫和雕塑。現在,如果您可以向每一部分提出一個問題並獲得有意義的答案,該怎麼辦?您可能會問:“您在講什麼故事?

介紹 Openai已根據備受期待的“草莓”建築發布了其新模型。這種稱為O1的創新模型增強了推理能力,使其可以通過問題進行思考

SQL的Alter表語句:動態地將列添加到數據庫 在數據管理中,SQL的適應性至關重要。 需要即時調整數據庫結構嗎? Alter表語句是您的解決方案。本指南的詳細信息添加了Colu

Meta's Llama 3.2:多式聯運AI強力 Meta的最新多模式模型Llama 3.2代表了AI的重大進步,具有增強的語言理解力,提高的準確性和出色的文本生成能力。 它的能力t
