使用llamaindex在抹布中的記憶和混合搜索
介紹
檢索增強生成(RAG)管道正在改善AI系統與自定義數據的交互方式,但是我們將重點關注的兩個關鍵組件:內存和混合搜索。在本文中,我們將探討如何整合這些強大的功能可以將您的抹布系統從簡單的提問工具轉換為上下文感知的,智能的對話代理。
RAG中的內存使您的系統可以維護和利用對話歷史記錄,創建更連貫和上下文相關的交互。同時,混合搜索將對矢量搜索的語義理解與基於關鍵字的方法的精確度相結合,從而大大提高了抹布管道的檢索準確性。
在本文中,我們將使用LlamainDex使用QDRANT作為矢量商店和Google的Gemini作為我們的大語言模型來實施內存和混合搜索。
學習目標
- 對內存在抹布系統中的作用及其對生成上下文準確響應的影響獲得實施理解。
- 學習將Google的Google的Gemini LLM和QDrant快速嵌入在LlamainDex框架中,這很有用,因為OpenAI是LlamainDex中使用的默認LLM和嵌入模型。
- 使用Qdrant矢量存儲來開發混合搜索技術的實現,結合向量和關鍵字搜索以增強抹布應用程序中的檢索精度。
- 探索Qdrant作為矢量商店的功能,重點關注其內置的混合搜索功能和快速嵌入功能。
本文作為數據科學博客馬拉鬆的一部分發表。
目錄
- QDRANT中的混合搜索
- 使用LlamainDex的記憶和混合搜索
- 步驟1:安裝要求
- 步驟2:定義LLM和嵌入模型
- 步驟3:加載數據
- 步驟4:通過混合搜索設置QDRANT
- 步驟5:索引您的文檔
- 步驟6:查詢索引查詢引擎
- 步驟7:定義內存
- 步驟8:創建帶有內存的聊天引擎
- 步驟9:測試內存
- 常見問題
QDRANT中的混合搜索
想像一下,您正在為大型電子商務網站構建聊天機器人。用戶問:“向我展示最新的iPhone型號。”通過傳統的矢量搜索,您可能會獲得語義上相似的結果,但是您可能會錯過確切的匹配。另一方面,關鍵字搜索可能太嚴格了。混合搜索為您提供了兩全其美的最好:
- 向量搜索捕獲語義含義和上下文
- 關鍵字搜索確保特定術語的精度
Qdrant是我們本文首選的矢量商店,也是充分的理由:
- Qdrant在定義時只需啟用混合參數即可輕鬆實現混合搜索。
- 它帶有使用快速培訓的優化嵌入模型,其中該模型以ONNX格式加載。
- QDRANT實施優先考慮保護敏感信息,提供多功能部署選項,最小化響應時間並減少運營費用。
使用LlamainDex的記憶和混合搜索
我們將深入研究LlamainDex框架內的內存和混合搜索的實際實施,展示這些功能如何增強檢索增強發電(RAG)系統的功能。通過集成這些組件,我們可以創建一個更聰明,更感知的對話代理,該代理有效地利用了歷史數據和高級搜索技術。
步驟1:安裝要求
好吧,讓我們逐步分解這一點。我們將使用LlamainDex,Qdrant矢量商店,從QDRANT進行了快進,以及Google的Gemini模型。確保已安裝這些庫:
! !
步驟2:定義LLM和嵌入模型
首先,讓我們導入依賴關係並設置API密鑰:
導入操作系統 從GetPass Import GetPass 來自llama_index.llms.gemini Import gemini 來自llama_index.embeddings.Fastembed進口fastembedembedding Google_api_key = getPass(“輸入您的雙子座API:”) os.environ [“ Google_api_key”] = Google_api_key llm = gemini()#gemini 1.5閃光燈 embed_model = fastembedembedding()
現在,讓我們測試API當前是否是通過在示例用戶查詢上運行該LLM來定義的。
llm_response = llm.complete(“一件開始?”)。 打印(llm_response)
在Llamaindex中,OpenAI是默認的LLM和嵌入模型,以覆蓋我們需要從LlamainDex Core定義設置。在這裡,我們需要覆蓋LLM和嵌入模型。
來自llama_index.core導入設置 settings.llm = llm settings.embed_model = embed_model
步驟3:加載數據
在此示例中,假設我們在數據文件夾中有一個PDF,我們可以使用LlamainDex中的SimpleDirectory Reader加載數據文件夾。
來自llama_index.core導入simpledirectoryReader documents = simpleDirectoryReader(“ ./ data/”)。 load_data()
步驟4:通過混合搜索設置QDRANT
我們需要定義一個QDRANTVECTORSTORE實例,並將其設置在此示例中。我們還可以使用其云服務或Localhost來定義QDrant客戶端,但是在我們的內存文章中,具有收集名稱的定義應該可以。
確保enable_hybrid = true,因為這允許我們使用QDRANT的混合搜索功能。我們的收藏名稱是“紙”,因為數據文件夾在有關代理商的研究論文中包含PDF。
來自llama_index.core導入vectorstoreindex,StorageContext 來自llama_index.vector_stores.qdrant導入QDRANTVECTORSTORE 導入qdrant_client 客戶端= qdrant_client.qdrantclient( 位置=“:內存:”, ) vector_store = qdrantVectorstore( collection_name =“紙”, 客戶端=客戶端, enable_hybrid = true,#混合搜索將進行 batch_size = 20, )
步驟5:索引您的文檔
通過在我們的抹布系統中實現內存和混合搜索,我們創建了一個更聰明,更聰明的上下文-A
Storage_Context = StorageContext.from_defaults(vector_store = vector_store) index = vectorstoreIndex.from_documents( 文件, storage_context = storage_context, )
步驟6:查詢索引查詢引擎
索引是我們在LlamainDex中定義獵犬和發電機鏈的部分。它處理文檔集合中的每個文檔,並為每個文檔的內容生成嵌入式。然後,它將這些嵌入在我們的Qdrant矢量存儲中。它創建了一個索引結構,可有效檢索。在定義查詢引擎時,請確保在混合動力車中查詢模式。
query_engine = index.as_query_engine( vector_store_query_mode =“ hybrid” ) revertmon1 = query_engine.query(“生活的含義是什麼?”) 打印(響應1) revertmon2 = query_engine.query(“在2個句子中給出摘要”) 打印(響應2)
在上面的查詢引擎中,我們運行兩個查詢,一個是在上下文中,另一個在上下文之外。這是我們得到的輸出:
輸出 #響應1 提供的文本著重於使用大語模型(LLMS)在自主代理中計劃。 它沒有討論生活的含義。 #響應2 本文檔探討了大型語言模型(LLM)作為解決複雜任務的代理。 它專注於兩種主要方法: 分解優先的方法, 在執行前將任務分解為子任務,而 交錯分解方法,該方法基於反饋動態調整分解。
步驟7:定義內存
雖然我們的聊天機器人表現良好並提供了改進的響應,但它仍然缺乏多個交互之間的上下文意識。這是記憶進入圖片的地方。
來自llama_index.core.memory Import ChatMemorybuffer 內存= chatmemorybuffer.from_defaults(token_limit = 3000)
步驟8:創建帶有內存的聊天引擎
我們將創建一個使用混合搜索和內存的聊天引擎。在LlamainDex中,當我們擁有外部或外部數據時,請確保聊天模式是上下文。
chat_engine = index.as_chat_engine( chat_mode =“上下文”, 內存=內存, system_prompt =( “您是AI助手,他們回答用戶問題” ), )
步驟9:測試內存
讓我們進行一些查詢,並檢查內存是否按預期工作。
從ipython.display導入降價,顯示 check1 = chat_engine.chat(“在2句中給摘要”) check2 = chat_engine.chat(“繼續摘要,在上兩個句子中再添加一個句子”) check3 = chat_engine.chat(“將上述抽像變成詩”)
結論
我們探討了將內存和混合搜索集成到檢索增強發電(RAG)系統中如何顯著增強其功能。通過將LlamainDex與Qdrant用作矢量商店和Google的雙子座作為大語言模型,我們演示了混合搜索如何結合向量和基於關鍵字的檢索的優勢,以提供更精確的結果。內存的添加進一步改善了上下文理解,從而使聊天機器人能夠在多個交互之間提供連貫的響應。這些功能共同創造了一個更聰明,更智能的上下文感知系統,使破布管道對複雜的AI應用程序更有效。
關鍵要點
- RAG管道中的內存組件的實現顯著增強了聊天機器人的上下文意識和在多個交互之間保持連貫對話的能力。
- 使用QDRANT作為矢量存儲的混合搜索集成,結合了向量和關鍵字搜索的優勢,以提高抹布系統中的檢索準確性和相關性,從而最大程度地減少了幻覺的風險。免責聲明,它並沒有完全消除幻覺,而是降低了風險。
- 利用Llamaindex的ChatMemoryBuffer進行對話歷史的有效管理,並具有可配置的令牌限制,以平衡上下文保留和計算資源。
- 將Google的雙子座模型納入Llamaindex框架中,並將其嵌入提供商嵌入,展示了LlamainDex在適應不同的AI模型和嵌入技術方面的靈活性。
常見問題
問1。什麼是混合搜索,為什麼在抹布中很重要?答:混合搜索結合了矢量搜索以獲取語義理解和關鍵字搜索精度。它通過允許系統同時考慮上下文和確切的術語來提高結果的準確性,從而可以更好地檢索結果,尤其是在復雜的數據集中。
Q2。為什麼在抹布中使用QDrant進行混合搜索?答:QDRANT支持框開的混合搜索,可針對快速嵌入式進行優化,並且可擴展。這使其成為在抹布系統中同時實施基於向量和關鍵字的搜索的可靠選擇,從而確保大規模的性能。
Q3。內存如何改善抹布系統?A.抹布系統中的內存可以保留對話歷史記錄,從而使聊天機器人能夠在交互之間提供更連貫和上下文的準確響應,從而顯著增強了用戶體驗。
Q 4。我可以將本地模型代替基於雲的API用於抹布應用嗎?答:是的,您可以運行本地LLM(例如Ollama或HuggingFace),而不是使用OpenAI之類的基於雲的API。這使您可以在不上傳到外部服務器的情況下保持對數據的完全控制,這是對隱私敏感應用程序的普遍關注點。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
以上是使用llamaindex在抹布中的記憶和混合搜索的詳細內容。更多資訊請關注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)

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

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

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

介紹 Mistral發布了其第一個多模式模型,即Pixtral-12b-2409。該模型建立在Mistral的120億參數Nemo 12B之上。是什麼設置了該模型?現在可以拍攝圖像和Tex

在從事代理AI時,開發人員經常發現自己在速度,靈活性和資源效率之間進行權衡。我一直在探索代理AI框架,並遇到了Agno(以前是Phi-

陷入困境的基準:駱駝案例研究 2025年4月上旬,梅塔(Meta)揭開了其Llama 4套件的模特,擁有令人印象深刻的性能指標,使他們對GPT-4O和Claude 3.5 Sonnet等競爭對手的良好定位。倫斯的中心

視頻遊戲可以緩解焦慮,建立焦點或支持多動症的孩子嗎? 隨著醫療保健在全球範圍內挑戰,尤其是在青年中的挑戰,創新者正在轉向一種不太可能的工具:視頻遊戲。現在是世界上最大的娛樂印度河之一

解鎖嵌入模型的力量:深入研究安德魯·NG的新課程 想像一個未來,機器可以完全準確地理解和回答您的問題。 這不是科幻小說;多虧了AI的進步,它已成為R
