搜尋
首頁科技週邊人工智慧使用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(“將上述抽像變成詩”) 

使用llamaindex在抹布中的記憶和混合搜索

使用llamaindex在抹布中的記憶和混合搜索

結論

我們探討了將內存和混合搜索集成到檢索增強發電(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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用LM Studio在本地運行LLM? - 分析Vidhya如何使用LM Studio在本地運行LLM? - 分析VidhyaApr 19, 2025 am 11:38 AM

輕鬆在家運行大型語言模型:LM Studio 使用指南 近年來,軟件和硬件的進步使得在個人電腦上運行大型語言模型 (LLM) 成為可能。 LM Studio 就是一個讓這一過程變得輕鬆便捷的優秀工具。本文將深入探討如何使用 LM Studio 在本地運行 LLM,涵蓋關鍵步驟、潛在挑戰以及在本地擁有 LLM 的優勢。無論您是技術愛好者還是對最新 AI 技術感到好奇,本指南都將提供寶貴的見解和實用技巧。讓我們開始吧! 概述 了解在本地運行 LLM 的基本要求。 在您的電腦上設置 LM Studi

蓋伊·佩里(Guy Peri)通過數據轉換幫助麥考密克的未來蓋伊·佩里(Guy Peri)通過數據轉換幫助麥考密克的未來Apr 19, 2025 am 11:35 AM

蓋伊·佩里(Guy Peri)是麥考密克(McCormick)的首席信息和數字官。儘管他的角色僅七個月,但Peri正在迅速促進公司數字能力的全面轉變。他的職業生涯專注於數據和分析信息

迅速工程中的情感鍊是什麼? - 分析Vidhya迅速工程中的情感鍊是什麼? - 分析VidhyaApr 19, 2025 am 11:33 AM

介紹 人工智能(AI)不僅要理解單詞,而且要理解情感,從而以人的觸感做出反應。 這種複雜的互動對於AI和自然語言處理的快速前進的領域至關重要。 Th

12個最佳數據科學工作流程的AI工具-Analytics Vidhya12個最佳數據科學工作流程的AI工具-Analytics VidhyaApr 19, 2025 am 11:31 AM

介紹 在當今以數據為中心的世界中,利用先進的AI技術對於尋求競爭優勢和提高效率的企業至關重要。 一系列強大的工具使數據科學家,分析師和開發人員都能構建,Depl

AV字節:OpenAI的GPT-4O Mini和其他AI創新AV字節:OpenAI的GPT-4O Mini和其他AI創新Apr 19, 2025 am 11:30 AM

本週的AI景觀爆炸了,來自Openai,Mistral AI,Nvidia,Deepseek和Hugging Face等行業巨頭的開創性發行。 這些新型號有望提高功率,負擔能力和可訪問性,這在TR的進步中推動了

報告發現,困惑的Android應用程序有安全缺陷。報告發現,困惑的Android應用程序有安全缺陷。Apr 19, 2025 am 11:24 AM

但是,該公司的Android應用不僅提供搜索功能,而且還充當AI助手,並充滿了許多安全問題,可以將其用戶暴露於數據盜用,帳戶收購和惡意攻擊中

每個人都擅長使用AI:關於氛圍編碼的想法每個人都擅長使用AI:關於氛圍編碼的想法Apr 19, 2025 am 11:17 AM

您可以查看會議和貿易展覽中正在發生的事情。您可以詢問工程師在做什麼,或諮詢首席執行官。 您看的任何地方,事情都以驚人的速度發生變化。 工程師和非工程師 有什麼區別

火箭發射模擬和分析使用Rocketpy -Analytics Vidhya火箭發射模擬和分析使用Rocketpy -Analytics VidhyaApr 19, 2025 am 11:12 AM

模擬火箭發射的火箭發射:綜合指南 本文指導您使用強大的Python庫Rocketpy模擬高功率火箭發射。 我們將介紹從定義火箭組件到分析模擬的所有內容

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。