LlamaIndex 第八篇 MilvusVectorStore

本指南演示了如何使用 LlamaIndex 和 Milvus 構建一個檢索增強生成(RAG)系統。

RAG 系統將檢索系統與生成模型相結合,根據給定的提示生成新的文本。該系統首先使用 Milvus 等向量相似性搜索引擎從語料庫中檢索相關文檔,然后使用生成模型根據檢索到的文檔生成新的文本。

安裝依賴:

pip install llama-index-vector-stores-milvus -i https://mirrors.aliyun.com/pypi/simple/

加載數據

準備的數據:

《背影》作者:朱自清我與父親不相見已二年余了,我最不能忘記的是他的背影。那年冬天,祖母死了,父親的差使⑴也交卸了,正是禍不單行的日子。我從北京到徐州,打算跟著父親奔喪⑵回家。
到徐州見著父親,看見滿院狼藉⑶的東西,又想起祖母,不禁簌簌地流下眼淚。父親說:“事已如此,不必難過,好在天無絕人之路!”回家變賣典質⑷,父親還了虧空;又借錢辦了喪事。這些日子,家中光景很是慘澹⑸,一半為了喪事,一半為了父親賦閑⑹。
喪事完畢,父親要到南京謀事,我也要回北京念書,我們便同行。到南京時,有朋友約去游逛,勾留⑺了一日;第二日上午便須渡江到浦口,下午上車北去。父親因為事忙,本已說定不送我,
叫旅館里一個熟識的茶房⑻陪我同去。他再三囑咐茶房,甚是仔細。但他終于不放心,怕茶房不妥帖⑼;頗躊躇⑽了一會。
其實我那年已二十歲,北京已來往過兩三次,是沒有什么要緊的了。他躊躇了一會,終于決定還是自己送我去。我再三勸他不必去;
他只說:“不要緊,他們去不好!”我們過了江,進了車站。我買票,他忙著照看行李。行李太多了,得向腳夫⑾行些小費才可過去。
他便又忙著和他們講價錢。我那時真是聰明過分,總覺他說話不大漂亮,非自己插嘴不可,但他終于講定了價錢;
就送我上車。他給我揀定了靠車門的一張椅子;我將他給我做的紫毛大衣鋪好座位。他囑我路上小心,夜里要警醒些,
不要受涼。又囑托茶房好好照應我。我心里暗笑他的迂;他們只認得錢,托他們只是白托!而且我這樣大年紀的人,
難道還不能料理自己么?我現在想想,我那時真是太聰明了。我說道:“爸爸,你走吧。”他往車外看了看,說:“我買幾個橘子去。你就在此地,不要走動。”我看那邊月臺的柵欄外有幾個賣東西的等著顧客。
走到那邊月臺,須穿過鐵道,須跳下去又爬上去。父親是一個胖子,走過去自然要費事些。
我本來要去的,他不肯,只好讓他去。我看見他戴著黑布小帽,穿著黑布大馬褂⑿,深青布棉袍,蹣跚⒀地走到鐵道邊,慢慢探身下去,
尚不大難。可是他穿過鐵道,要爬上那邊月臺,就不容易了。他用兩手攀著上面,兩腳再向上縮;
他肥胖的身子向左微傾,顯出努力的樣子。這時我看見他的背影,我的淚很快地流下來了。我趕緊拭干了淚。
怕他看見,也怕別人看見。我再向外看時,他已抱了朱紅的橘子往回走了。過鐵道時,他先將橘子散放在地上,
自己慢慢爬下,再抱起橘子走。到這邊時,我趕緊去攙他。他和我走到車上,將橘子一股腦兒放在我的皮大衣上。
于是撲撲衣上的泥土,心里很輕松似的。過一會兒說:“我走了,到那邊來信!”我望著他走出去。他走了幾步,
回過頭看見我,說:“進去吧,里邊沒人。”等他的背影混入來來往往的人里,再找不著了,我便進來坐下,我的眼淚又來了。近幾年來,父親和我都是東奔西走,家中光景是一日不如一日。他少年出外謀生,獨力支持,
做了許多大事。哪知老境卻如此頹唐!他觸目傷懷,自然情不能自已。情郁于中,自然要發之于外;
家庭瑣屑便往往觸他之怒。他待我漸漸不同往日。但最近兩年不見,他終于忘卻我的不好,只是惦記著我,
惦記著我的兒子。我北來后,他寫了一信給我,信中說道:“我身體平安,惟膀子疼痛厲害,舉箸⒁提筆,諸多不便,
大約大去之期⒂不遠矣。”我讀到此處,在晶瑩的淚光中,又看見那肥胖的、青布棉袍黑布馬褂的背影。唉!我不知何時再能與他相見!
from llama_index.core import Settings, SimpleDirectoryReaderfrom my_llms.MyLLMsClients import MyLLMsClientsSettings.llm = MyLLMsClients.deepseek_client()
Settings.embed_model = MyLLMsClients.qwen_embeddings()# 加載數據
documents = SimpleDirectoryReader(input_files=["../data/散文/背影-朱自清.txt"], recursive=True).load_data()print("Document ID:", documents[0].doc_id)

創建數據索引

現在我們已經有了一個文檔,可以創建索引并插入該文檔。對于索引,我們將使用 MilvusVectorStore。

# 創建文檔索引
vector_store = MilvusVectorStore(uri="http://192.168.0.116:19530",collection_name="essay_collection",dim=1024,overwrite=True, # 是否覆蓋同名的已有集合。默認值為 False。
)storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context
)

查詢數據

# 創建查詢引擎并進行查詢
query_engine = index.as_query_engine()
res = query_engine.query("文章的作者是誰?")
print(res)

運行結果:

Document ID: 03d81861-1043-4f58-8923-8f03be77d066
2025-05-13 22:16:25,907 [DEBUG][_create_connection]: Created new connection using: 2b0fb6a2181146fa98956805fbf5d9ea (async_milvus_client.py:599)
文章的作者是朱自清。

Milvus數據庫中的變化

此時,執行代碼后,LlamaIndex在Milvus中使用的是默認數據庫"default"庫,并在此庫中創建了集合?essay_collection 。

集合Schema字段說明

  • doc_id : document 文檔ID
  • text: 文檔的文本內容
  • embedding: 存儲的向量,并為向量創建了索引,索引名稱:embedding,索引類型:FLAT

從Milvus中查詢已有的數據

from llama_index.core import Settings, StorageContext, VectorStoreIndex
from llama_index.vector_stores.milvus import MilvusVectorStorefrom my_llms.MyLLMsClients import MyLLMsClientsSettings.llm = MyLLMsClients.deepseek_client()
Settings.embed_model = MyLLMsClients.qwen_embeddings()# 連接Milvus
vector_store = MilvusVectorStore(uri="http://192.168.0.116:19530",collection_name="essay_collection",dim=1024,overwrite=False, # 是否覆蓋同名的已有集合。默認值為 False。embedding_field='embedding',
)storage_context = StorageContext.from_defaults(vector_store=vector_store)# 從向量數據庫中加載索引
index = VectorStoreIndex.from_vector_store(vector_store, storage_context=storage_context
)#創建查詢引擎并進行查詢
query_engine = index.as_query_engine()
res = query_engine.query("作者多久沒有見到老爹了?")
print(res)
2025-05-13 23:28:14,478 [DEBUG][_create_connection]: Created new connection using: c3cbdd7fe28c4a81803a302e8d95862d (async_milvus_client.py:599)
作者已經兩年多沒有見到父親了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79697.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

淺聊一下數據庫的索引優化

背景 這里的索引說的是關系數據庫(MSSQL)中的索引。 本篇不是純技術性的內容,只是聊一次性能調優的經歷,包含到一些粗淺的實現和驗證手段,所以,大神忽略即可。 額…對了,筆者對數據庫的優化手段…

【android bluetooth 框架分析 02】【Module詳解 7】【VendorSpecificEventManager 模塊介紹】

1. 背景 我們在 gd_shim_module 介紹章節中&#xff0c;看到 我們將 VendorSpecificEventManager 模塊加入到了 modules 中。 // system/main/shim/stack.cc modules.add<hci::VendorSpecificEventManager>();在 ModuleRegistry::Start 函數中我們對 加入的所有 module…

小剛說C語言刷題—1080質因子

1.題目描述 任意輸入一正整數 N &#xff0c;求出它的所有質因子。如&#xff1a;10&#xff1d;25&#xff0c;20&#xff1d;225。 輸入 輸入只有一行&#xff0c;包括 11個整數 n (1≤n≤32768) 輸出 輸出若干行&#xff0c;按從小到大的順序給出這個數的所有質因子&am…

C語言中的宏

1.防止頭文件重復包含 1.#pragma once #pragma once 是一個編譯器指令&#xff0c;用于防止頭文件被重復包含。它的核心作用是通過簡單語法替代傳統的頭文件保護宏&#xff08;#ifndef/#define/#endif&#xff09;&#xff0c;提升代碼簡潔性和可維護性。 作用詳解 防止重復…

MapReduce 模型

?引言? MapReduce 是分布式計算領域的里程碑式模型&#xff0c;由 Google 在 2004 年論文中首次提出&#xff0c;旨在簡化海量數據處理的復雜性。其核心思想是通過函數式編程的 ?Map? &#xff08;映射&#xff09;和 ?Reduce? &#xff08;歸約&#xff09;階段&#x…

Linux文件編程——標準庫函數fopen、fread、fwrite等函數

1. fopen — 打開文件 函數原型&#xff1a; FILE *fopen(const char *filename, const char *mode);參數&#xff1a; filename&#xff1a;要打開的文件名&#xff0c;可以是相對路徑或絕對路徑。 mode&#xff1a;文件打開模式&#xff0c;表示文件的操作方式&#xff08…

從 Git 到 GitHub - 使用 Git 進行版本控制 - Git 常用命令

希望本貼能從零開始帶您一起學習如何使用 Git 進行版本控制&#xff0c;并結合遠程倉庫 GitHub。這會是一個循序漸進的指南&#xff0c;我們開始吧&#xff01; 學習 Git 和 GitHub 的路線圖&#xff1a; 理解核心概念&#xff1a;什么是版本控制&#xff1f;Git 是什么&…

2025.05.11拼多多機考真題算法崗-第四題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 04. 記憶碎片重組 問題描述 盧小姐正在開發一款名為"記憶碎片"的游戲,玩家需要分析混亂的記憶數據,推測出形成這些記憶的原始序列。游戲中,記憶數據存儲在一個特殊的數…

Android Exoplayer多路不同時長音視頻混合播放

在上一篇Android Exoplayer 實現多個音視頻文件混合播放以及音軌切換中我們提到一個問題&#xff0c;如果視頻和音頻時長不一致&#xff0c;特別是想混合多個音頻和多個視頻時就會出問題&#xff0c;無法播放。報錯如下&#xff1a; E/ExoPlayerImplInternal(11191): Playback…

Datawhale PyPOTS時間序列5月第1次筆記

課程原地址&#xff1a; https://github.com/WenjieDu/PyPOTS&#xff08;Package地址&#xff09; https://github.com/WenjieDu/BrewPOTS/tree/datawhale/202505_datawhale&#xff08;Tutorial地址&#xff09; 2.1 PyPOTS簡介 PyPOTS 是一個專為處理部分觀測時間序列&a…

網安學途—流量分析 attack.pcap

attack.pacp 使用Wireshark查看并分析虛擬機windows 7桌面下的attack.pcapng數據包文件&#xff0c;通過分析數據包attack.pcapng找出黑客的IP地址&#xff0c;并將黑客的IP地址作為FLAG &#xff08;形式&#xff1a;[IP地址]&#xff09;提交&#xff1a; 過濾器篩選&#x…

【大模型】DeepResearcher:通用智能體通過強化學習探索優化

DeepResearcher&#xff1a;通過強化學習在真實環境中擴展深度研究 一、引言二、技術原理&#xff08;一&#xff09;強化學習與深度研究代理&#xff08;二&#xff09;認知行為的出現&#xff08;三&#xff09;模型架構 三、實戰運行方式&#xff08;一&#xff09;環境搭建…

go語言實現IP歸屬地查詢

效果: 實現代碼main.go package mainimport ("encoding/json""fmt""io/ioutil""net/http""os" )type AreaData struct {Continent string json:"continent"Country string json:"country"ZipCode …

基于STM32、HAL庫的SGTL5000XNLA3R2音頻接口芯片驅動程序設計

一、簡介: SGTL5000XNLA3R2 是 Cirrus Logic 推出的高性能、低功耗音頻編解碼器,專為便攜式和電池供電設備設計。它集成了立體聲 ADC、DAC、麥克風前置放大器、耳機放大器和數字信號處理功能,支持 I2S/PCM 音頻接口和 I2C 控制接口,非常適合與 STM32 微控制器配合使用。 二…

window 顯示驅動開發-報告圖形內存(一)

計算圖形內存 在 VidMm 能夠向客戶端報告準確的帳戶之前&#xff0c;它必須首先計算圖形內存的總量。 VidMm 使用以下內存類型和公式來計算圖形內存&#xff1a; 系統總內存 此值是操作系統可訪問的系統內存總量。 BIOS 分配的內存不會出現在此數字中。 例如&#xff0c;一臺…

[FA1C4] 博客鏈接

Blog Link 博客已經從 CSDN 轉移 高情商&#xff1a;博客是給人看的 低情商&#xff1a;CSDN 已經爛了根本不能看 鏈接: https://fa1c4.github.io/

python通過curl訪問deepseek的API調用案例

廢話少說&#xff0c;開干&#xff01; API申請和充值 下面是deepeek的API網站 https://platform.deepseek.com/ 進去先注冊&#xff0c;是不是手機賬號密碼都不重要&#xff0c;都一樣&#xff0c;完事充值打米&#xff0c;主要是打米后左側API Keys里面創建一個API Keys&am…

【計算機視覺】OpenCV項目實戰:基于face_recognition庫的實時人臉識別系統深度解析

基于face_recognition庫的實時人臉識別系統深度解析 1. 項目概述2. 技術原理與算法設計2.1 人臉檢測模塊2.2 特征編碼2.3 相似度計算 3. 實戰部署指南3.1 環境配置3.2 數據準備3.3 實時識別流程 4. 常見問題與解決方案4.1 dlib安裝失敗4.2 人臉檢測性能差4.3 誤識別率高 5. 關鍵…

第6章: SEO與交互指標

第6章: SEO與交互指標 在當今的SEO環境中&#xff0c;Google越來越重視用戶交互指標&#xff0c;如頁面停留時長、交互性能等。本章將深入探討如何優化網頁速度和用戶交互體驗&#xff0c;以提升SEO效果和用戶滿意度。 1. Google的新時代SEO指標 隨著互聯網技術的發展&#xff…

Starrocks的主鍵表涉及到的MOR Delete+Insert更新策略

背景 寫這個文章的作用主要是做一些總結和梳理&#xff0c;特別是正對大數據場景下的實時寫入更新策略 COW 和 MOR 以及 DeleteInsert 的技術策略的演進&#xff0c; 這也適用于其他大數據的計算存儲系統。該文章主要參考了Primary Key table. 分析總結 Starrocks 的主鍵表主…