首頁 >科技週邊 >人工智慧 >建立一名博伽梵歌AI助手

建立一名博伽梵歌AI助手

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌原創
2025-03-05 11:39:10912瀏覽

在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
  • 下面的
是流程圖,該流程圖解釋了我們如何構建Bhagwad Gita助手:

架構概述

建立一名博伽梵歌AI助手

數據攝入:900頁的Bhagavad gita pdf分為文本塊。 嵌入:QDrant Fastembed的文本對矢量嵌入模型。

>向量DB:帶有BQ商店嵌入的QDRANT,啟用毫秒搜索。
    LLM推斷:DeepSeek R1通過GROQ LPU生成上下文感知的響應。
  • UI:簡化具有可擴展的“思考過程”可見性的應用程序。
  • >逐步實現
  • >讓我們現在按一個步驟操作:
  • step1:安裝和初始設置
  • >讓我們使用LlamainDex建立抹布管道的基礎。我們需要安裝必需軟件包,包括核心Llamaindex庫,QDRANT矢量商店集成,快速嵌入的嵌入以及用於LLM訪問的GROQ。
  • 注意:

>

>對於文檔索引,我們將使用COLAB的A gpu

存儲數據。這是一個一次性過程。

>

>保存數據後,我們可以使用集合名稱在任何地方運行推斷,無論是在VS代碼,簡化還是其他平台上。

完成安裝後,讓我們導入所需的模塊。 > step2:文檔處理和嵌入

    >在這裡,我們處理將原始文本轉換為向量表示的關鍵任務。 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維向量的新集合,並使用餘弦相似性進行距離測量。

    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,根據數據大小,此步驟可能需要幾分鐘。

    步驟5:帶有DeepSeek r1

    的抹布管道

    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  

    Process-2:A-增強提示

    對於抹布,使用chatprompttemplate定義系統的交互模板很重要。該模板創建了一個專業的助手,在Bhagavad-Gita中知識淵博,能夠理解多種語言(英語,印地語,梵語)。 >它包括用於上下文注入和查詢處理的結構化格式,並清楚地說明了處理外面問題的明確說明。

    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>響應)

    建立一名博伽梵歌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)

    建立一名博伽梵歌AI助手

    現在,如果您需要再次使用此應用程序怎麼辦?我們應該再次執行所有步驟嗎?

    答案是否。

    step6:保存的索引推理

    >您已經編寫的內容沒有太大差異。我們將重複使用相同的搜索和管道功能以及我們需要運行query_points的收集名稱。

    >我們將在“ sparlit app.py”中使用上面的兩個函數和message_template。 
    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下定義一些初始化步驟。

    請記住,當用戶輸入問題時,快速培訓將僅下載一次模型權重,GROQ和QDRANT INTANTITION也是如此。

    >

    如果您注意到響應輸出,則格式為< 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的會話狀態中初始化消息歷史記錄。側邊欄中的“清晰聊天”按鈕使用戶可以重置此歷史記錄。 

    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函數將思維過程(如可擴展部分顯示)與實際答案分開。

    剩下的代碼是一種標準格式,用於在簡化中定義聊天機器人組件,即輸入處理為用戶問題創建輸入字段。提交問題時,將顯示並將其添加到消息歷史記錄中。現在,它可以通過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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn