精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于LangChain和云原生向量數據庫Milvus開發混合搜索AI程序 原創

發布于 2024-12-13 08:26
瀏覽
0收藏

本文將探討基于LangChain框架和云原生向量數據庫Milvus并將密集嵌入與稀疏嵌入結合起來開發混合搜索型AI程序的實戰過程。

簡介

最近,我們——來自IBM研究中心的團隊——需要在??Milvus???向量存儲中使用混合搜索技術。因為我們已經在使用??LangChain框架???,所以我們決定一鼓作氣貢獻出在??langchain-milvus???中啟用這一功能所需的一切。其中包括通過langchain接口支持??稀疏嵌入???和??多向量搜索??技術。

在本文中,我們首先簡要介紹密集嵌入和稀疏嵌入之間的區別,然后分析如何使用混合搜索來利用這兩種嵌入技術。然后,我們還將提供關鍵部分的源代碼分析,以演示如何在langchain-milvus中使用這些新功能。

為了使用本文中的代碼,首先應該安裝如下一些軟件包:

pip install langchain_milvus==0.1.6
pip install langchain-huggingface==0.1.0
pip install "pymilvus[model]==2.4.8"

然后,進行如下導入:

from langchain_huggingface import HuggingFaceEmbeddings
from langchain_milvus.utils.sparse import BM25SparseEmbedding
from langchain_milvus.vectorstores import Milvus

你還可以在鏈接??https://gist.github.com/omriel1/3b8ea57cc14b896237c47d5417eaec8f處??查看和克隆整個代碼。

接下來,我們正式開始。

密集嵌入

使用向量存儲的最常見方式是使用密集嵌入。在這里,我們使用預先訓練的模型將數據(通常是文本,但也可以是其他媒體,如圖像等)嵌入到高維向量中,并將其存儲在向量數據庫中。向量有幾百(甚至幾千)個維度,每個條目都是浮點數。通常,向量中的所有條目都對應非零值,因此稱為“密集”。給定一個查詢,我們使用相同的模型將其嵌入,向量存儲根據向量相似性檢索相似的相關數據。借助于langchain-milvus這個框架,只需幾行代碼即可實現這一點。讓我們具體看一下這是如何完成的。

首先,我們使用來自??HuggingFace的模型??定義向量存儲:

dense_embedding = HuggingFaceEmbeddings(model_name=
"sentence-transformers/all-MiniLM-L6-v2")
vector_store = Milvus(
embedding_function=dense_embedding,
connection_args={"uri": "./milvus_dense.db"}, # Using milvus-lite for simplicity
auto_id=True,
)

然后,我們將數據插入到向量存儲中:

document = [
"Today was very warm during the day but cold at night",
"In Israel, Hot is a TV provider that broadcasts 7 days a week",
]
vector_store.add_texts(documents)

在后臺,每個文檔都使用我們提供的模型嵌入到向量中,并與原始文本一起存儲。

最后,我們可以搜索查詢并打印得到的結果:

query = "What is the weather? is it hot?"
dense_output = vector_store.similarity_search(query=query, k=1)
print(f"Dense embeddings results:\n{dense_output[0].page_content}\n")

# 輸出——密集嵌入的結果如下:
#         Today was very warm during the day but cold at night

在這里,查詢被嵌入,向量存儲執行(通常是近似的)相似性搜索并返回找到的最接近的內容。

密集嵌入模型經過訓練,可以捕獲數據的語義含義并將其表示在多維空間中。其優勢很明顯——它支持語義搜索;這意味著,結果基于查詢的含義。但是,有時僅僅這些還不夠。譬如,如果你尋找特定的關鍵字,甚至是沒有更廣泛含義的單詞(如名稱),語義搜索就會誤導你,這種方法就會失敗。

稀疏嵌入

在LLM成為現實之前,學習模型還沒有那么流行,搜索引擎使用傳統方法(如??TF-IDF算法???或其現代增強版的??BM25算法???——因其在開源分布式搜索引擎??Elasticsearch??中的使用而聞名)來搜索相關數據。使用這些方法,維度的數量就是詞匯量(通常為數萬,比密集向量空間大得多),每個條目代表關鍵字與文檔的相關性,同時這也考慮到該術語的頻率及其在文檔語料庫中的稀有性。對于每個數據點,大多數條目都是零(表示未出現的單詞),因此稱為“稀疏”。雖然底層實現不同,但使用langchain-milvus接口后,它變得非常相似。讓我們看看它的實際效果:

sparse_embedding = BM25SparseEmbedding(corpus=documents)
vector_store = Milvus(
embedding_function=sparse_embedding,
connection_args={"uri": "./milvus_sparse.db"},
auto_id=True,
)
vector_store.add_texts(documents)

query = "Does Hot cover weather changes during weekends?"
sparse_output = vector_store.similarity_search(query=query, k=1)
print(f"Sparse embeddings results:\n{sparse_output[0].page_content}\n")

#輸出:稀疏嵌入結果:
#         In Israel, Hot is a TV provider that broadcast 7 days a week

BM25適用于精確關鍵字匹配,這對于缺乏明確語義含義的術語或名稱非常有用。但是,它不會捕捉查詢的意圖,并且在需要語義理解的許多情況下會產生較差的結果。

【注意】“稀疏嵌入”一詞也指SPLADE或Elastic Elser等高級方法。這些方法也可以與Milvus一起使用,并可以集成到混合搜索中!

基于LangChain和云原生向量數據庫Milvus開發混合搜索AI程序-AI.x社區

作者本人提供的圖片

混合搜索

如果你在上面兩個示例之間交換查詢,并將每個查詢與另一個嵌入一起使用,則兩者都會產生錯誤的結果。這表明每種方法都有其優點,也有其缺點。混合搜索將兩者結合起來,旨在充分利用兩者的優點。通過使用密集和稀疏嵌入對數據進行索引,我們可以執行同時考慮語義相關性和關鍵字匹配的搜索,并根據自定義權重平衡結果。同樣,內部實現更復雜,但langchain-milvus庫使得這一過程非常容易。讓我們看看它是如何工作的:

vector_store = Milvus(
embedding_function=[
sparse_embedding,
dense_embedding,
],
connection_args={"uri": "./milvus_hybrid.db"}, 
auto_id=True,
)
vector_store.add_texts(documents)

在此設置中,稀疏和密集嵌入均適用。下面,讓我們測試一下具有相等權重的混合搜索:

query = "Does Hot cover weather changes during weekends?"
hybrid_output = vector_store.similarity_search(
query=query,
k=1,
ranker_type="weighted",
ranker_params={"weights": [0.49, 0.51]},  # Combine both results!
)
print(f"Hybrid search results:\n{hybrid_output[0].page_content}")

#輸出:混合搜索結果:
#         In Israel, Hot is a TV provider that broadcast 7 days a week

這將使用每個嵌入函數搜索相似的結果,為每個分數賦予權重,并返回具有最佳加權分數的結果。我們可以看到,如果對密集嵌入賦予稍微多一點的權重,我們就會得到想要的結果。對于第二個查詢也是如此。

如果我們對密集嵌入賦予更多權重,我們將再次得到不相關的結果,就像單獨使用密集嵌入一樣:

query = "When and where is Hot active?"
hybrid_output = vector_store.similarity_search(
query=query,
k=1,
ranker_type="weighted",
ranker_params={"weights": [0.2, 0.8]},  # Note -> the weights changed
)
print(f"Hybrid search results:\n{hybrid_output[0].page_content}")

# 輸出:混合搜索結果:
#         Today was very warm during the day but cold at night

在密集和稀疏之間找到適當的平衡并非易事,可以看作是更廣泛的超參數優化問題的一部分。目前正在進行的研究和工具試圖解決該領域的此類問題,例如IBM的??AutoAI for RAG??。

你可以通過更多方式調整和使用混合搜索方法。例如,如果每個文檔都有一個關聯的標題,則可以使用兩個密集嵌入函數(可能使用不同的模型)——一個用于標題,另一個用于文檔內容——并對兩個索引執行混合搜索。Milvus目前支持多達10個不同的向量字段,為復雜的應用程序提供了靈活性。還有用于索引和重新排名方法的其他配置,你可以查看有關可用參數和選項的??Milvus文檔??。

結束語

現在,可以通過LangChain訪問Milvus的多向量搜索功能,你可以輕松地將混合搜索集成到自己的應用程序中。這為在你的應用程序中應用不同的搜索策略開辟了新的可能性,從而可以輕松地定制搜索邏輯以適應特定使用場景。對我們來說,這是為開源項目做貢獻的好機會。我們日常使用的許多庫和工具都是開源的,回饋社區是件好事。希望這對其他人有所幫助。

最后,我要大聲感謝??Erick Friis???和??Cheng Zi??為langchain-milvus所做的所有努力。沒有他們,這項工作就不可能完成。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:??Dance Between Dense and Sparse Embeddings: Enabling Hybrid Search in LangChain-Milvus??,作者:Omri Levy,Ohad Eytan

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2024-12-13 09:58:42修改
收藏
回復
舉報
回復
相關推薦
欧美一级大片在线免费观看| 精品1区2区在线观看| 亚洲永久一区二区三区在线| 国产同性人妖ts口直男| 亚洲精品乱码久久| 男人天堂综合| 精品在线免费视频| 久久久久久国产精品三级玉女聊斋 | 激情av中文字幕| 亚洲欧洲自拍| 亚洲免费视频中文字幕| 久久综合九色欧美狠狠| 国产三级按摩推拿按摩| 免费精品视频| 欧美激情视频给我| 日韩精品电影一区二区三区| 成人自拍在线| 3d动漫精品啪啪| 国产精品-区区久久久狼| 成人日韩欧美| 国产欧美精品在线观看| 国产精品一区二区欧美| 国产又粗又黄又爽| 日韩精品亚洲专区| 97香蕉超级碰碰久久免费的优势| 久久国产高清视频| 精品久久中文| 精品一区二区三区四区| 操人视频免费看| 羞羞视频在线观看一区二区| 欧美午夜无遮挡| 日韩精品视频在线观看视频| 国产美女av在线| 中文字幕亚洲在| 日本精品一区二区三区不卡无字幕| 亚洲av色香蕉一区二区三区| 激情综合色综合久久综合| 国产精品99久久久久久白浆小说| 日韩av一区二区在线播放| 一区二区中文| 美女精品视频一区| 开心激情五月网| 日韩在线观看一区| 亚洲人永久免费| 色呦呦一区二区| 日韩av午夜| 亚洲激情视频网| 欧美日韩人妻精品一区在线| 亚洲精品福利| 欧美不卡123| 亚洲成人福利视频| 日韩欧美中文在线观看| 日韩一级免费观看| 国产探花一区二区三区| 国产精品久久久久久久久久久久久久久 | 中文字幕一区日韩电影| 亚洲不卡的av| 久久中文字幕av| 久久精品99久久久久久久久| 五月婷婷六月香| 欧美jizz| 色综合久久久888| 国产性一乱一性一伧一色| 亚洲一级网站| 26uuu国产精品视频| 日韩免费视频一区二区视频在线观看| 亚洲激情在线| 青青久久av北条麻妃黑人| 国产黄色免费观看| 日韩av在线发布| 91青草视频久久| 亚洲男人第一天堂| 91在线你懂得| 婷婷四房综合激情五月| 久操免费在线| 亚洲成人一二三| 精品久久久久久无码国产| 精品女同一区二区三区在线观看| 欧美精品黑人性xxxx| 国产成人av片| 啪啪亚洲精品| 精品国产拍在线观看| 欧美日韩在线观看成人| 99国产成+人+综合+亚洲欧美| 热久久这里只有精品| 中文字幕在线播放日韩| 国产精品1区二区.| 久久精品午夜一区二区福利| 永久免费av在线| 一区二区不卡在线视频 午夜欧美不卡在| 欧美精品久久久久久久久久久| 亚洲最大网站| 欧美一区二区三区人| 成人手机在线免费视频| 97精品国产| 97免费视频在线| 在线免费观看高清视频| 成人avav影音| 亚洲午夜在线观看| 成年人在线网站| 欧美日韩国产一级片| 亚洲av无码专区在线播放中文| 欧美日韩有码| 久久久免费观看| 中文区中文字幕免费看| 成人h版在线观看| 亚洲巨乳在线观看| 深夜成人在线| 日韩精品一区国产麻豆| 妺妺窝人体色WWW精品| 国产在线日韩| 国产精品专区一| 婷婷在线免费视频| 亚洲欧美偷拍卡通变态| www.超碰com| 色悠久久久久综合先锋影音下载| 亚洲欧美日韩视频一区| 国产一级理论片| 精品一区二区国语对白| 欧美主播一区二区三区美女 久久精品人| a级片国产精品自在拍在线播放| 一本久道中文字幕精品亚洲嫩| 性生活在线视频| 四季av一区二区凹凸精品| 青青在线视频一区二区三区| 日本韩国在线观看| 一区二区在线观看免费视频播放 | 国内精品久久久久影院薰衣草| 欧美精品一区二区三区在线看午夜| 午夜在线激情影院| 欧美高清精品3d| 日韩欧美视频免费观看| 葵司免费一区二区三区四区五区| 精品999在线观看| 成人免费高清观看| 日韩精品一区国产麻豆| 国产这里有精品| 国产精品资源在线观看| 欧美xxxx黑人又粗又长精品| 日本不卡免费高清视频在线| 精品日韩av一区二区| 青青草原在线免费观看视频| 国产精品综合久久| 男人的天堂视频在线| 国产精品2区| 欧美乱人伦中文字幕在线| 国产熟女一区二区三区五月婷| 中文字幕一区二区三区色视频| 在线黄色免费观看| 婷婷亚洲综合| 91网免费观看| 丁香高清在线观看完整电影视频 | 色菇凉天天综合网| 国产黄色网址在线观看| 久久黄色影院| 日韩福利一区二区三区| 日韩电影免费观| 夜夜躁日日躁狠狠久久88av| 黄色一区二区视频| 中文字幕亚洲在| 成人做爰69片免费| 最新国产乱人伦偷精品免费网站| 精品免费日产一区一区三区免费| 悠悠资源网亚洲青| 亚洲小视频在线观看| 最近中文字幕av| 亚洲日本韩国一区| 国产情侣久久久久aⅴ免费| 国产精品主播| 亚洲7777| 日韩免费一级| 91av在线精品| 日本在线视频网| 日韩一区二区三区在线视频| 国产无码精品在线播放| 久久免费视频一区| 蜜臀一区二区三区精品免费视频| 亚洲中无吗在线| 国产一区二区三区色淫影院| 欧美男人天堂| 久久精品成人欧美大片古装| 成人无码一区二区三区| 一本久久综合亚洲鲁鲁五月天| 任我爽在线视频| av高清不卡在线| 亚洲人视频在线| 在线精品一区| 一区二区免费电影| 国产精品香蕉| 国产欧美精品久久久| 成人影院在线视频| 日韩在线视频国产| 亚洲欧美色视频| 欧美二区三区的天堂| 成人精品免费在线观看| 自拍偷拍欧美激情| 搡老熟女老女人一区二区| 精品影视av免费| 免费观看精品视频| 欧美日韩1080p| 五月天亚洲综合| 欧美交a欧美精品喷水| 91九色单男在线观看| 美女100%一区| 性欧美长视频免费观看不卡| 免费日本一区二区三区视频| 亚洲人成在线观看网站高清| 亚洲国产精品无码久久| 欧美日韩免费视频| 天堂中文在线网| 亚洲一区二区中文在线| 亚洲精品自拍视频在线观看| 久久久午夜精品理论片中文字幕| 中文字幕99页| 国产剧情一区二区三区| 天堂网在线免费观看| 久久精品中文| 缅甸午夜性猛交xxxx| 欧美激情偷拍| 一区二区三区视频在线播放| 欧美日韩黑人| 欧美精品一区二区三区久久| 国偷自产视频一区二区久| 91国产丝袜在线放| 成人精品在线| 国产欧洲精品视频| 电影亚洲一区| 国产成人精品免高潮在线观看 | 91电影在线播放| 亚洲精品一区二区三区不| 日韩在线观看视频网站| 亚洲成人黄色网| 亚洲精品国偷拍自产在线观看蜜桃| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲高清123| 欧美精品尤物在线观看| 久久涩涩网站| 日韩成人一级| 久久精品人人做人人爽电影| 日韩高清一级| 精品欧美日韩| 亚欧日韩另类中文欧美| 久久精品人成| 九九综合九九| 日韩影院一区| 色小子综合网| 亚洲自拍偷拍一区二区三区| 91精品婷婷色在线观看| 亚洲成人动漫在线| 欧美婷婷在线| 亚洲精品无码国产| 国产亚洲毛片在线| 免费在线观看毛片网站| 日韩电影一二三区| 99热一区二区| 国产一区二区三区av电影| 午夜影院免费版| 成人精品视频一区| 国产男男chinese网站| 国产网站一区二区| 麻豆网址在线观看| 亚洲曰韩产成在线| 国产原创视频在线| 欧美日韩三级一区二区| 国产婷婷在线视频| 日韩电影中文字幕在线观看| 麻豆app在线观看| 色狠狠久久aa北条麻妃| 手机电影在线观看| 5566日本婷婷色中文字幕97| 欧美精品总汇| 91超碰在线电影| 五月综合久久| 一区二区三区免费看| 精品白丝av| 九色91popny| 国产精品亚洲成人| 在线免费看黄视频| 综合电影一区二区三区 | 九九久久精品视频| 日本天堂在线播放| 久久精品亚洲乱码伦伦中文| 欧美做爰爽爽爽爽爽爽| 亚洲电影在线播放| 最近中文字幕免费观看| 亚洲成人精品在线| h视频在线免费| 国模gogo一区二区大胆私拍| 亚洲国产尤物| 国内精品**久久毛片app| 久久在线免费| 欧美v在线观看| 国产成人精品午夜视频免费| 一本色道久久综合亚洲精品图片| 成人免费视频在线观看| 国产69精品久久久久久久久久| 3d动漫精品啪啪| 大片免费播放在线视频| 欧美精品成人91久久久久久久| 岛国精品在线| 久久久av水蜜桃| 国产精品观看| 五月天婷婷亚洲| 久久久久国产精品麻豆| 日本五十路女优| 91精品国产麻豆| freemovies性欧美| 国产91精品久久久久久| 日韩精品一区二区三区中文在线| 日韩福利影院| 久久久久在线| 污片免费在线观看| 一区二区三区国产精品| 中文字幕日产av| 亚洲欧洲日产国产网站| 爱啪视频在线观看视频免费| 国产日韩中文在线| 欧美偷拍综合| 欧美一级片中文字幕| jizz一区二区| 国产午夜小视频| 日韩欧美久久久| av片在线观看| 成人黄色午夜影院| 成人在线免费观看91| 国产情侣av自拍| 久久久亚洲精品一区二区三区 | 美女日韩在线中文字幕| av电影在线播放| 亚洲影视在线观看| 亚洲av无码片一区二区三区| 草民午夜欧美限制a级福利片| 欧美视频第一| 亚洲精品一区二区三| 青青草原综合久久大伊人精品优势| 中文字幕一区二区三区人妻不卡| 亚洲成人777| 天天操天天干天天| 97精品国产97久久久久久免费| 哺乳挤奶一区二区三区免费看| 美女av免费观看| 成人一道本在线| 日本系列第一页| 日韩高清中文字幕| 色在线免费观看| 奇米888一区二区三区| 石原莉奈在线亚洲二区| jizz中文字幕| 欧美日韩国产综合一区二区三区| 在线a人片免费观看视频| 成人欧美在线视频| 午夜久久tv| 中国极品少妇videossexhd| 午夜精品久久久| 青青草av免费在线观看| 国产精品99久久99久久久二8| 日韩成人免费| 午夜免费视频网站| 午夜免费久久看| 国产专区在线播放| 国产在线观看91精品一区| 女同性一区二区三区人了人一| 好吊操视频这里只有精品| 五月天视频一区| 国产精品久久久久一区二区国产| 国产精品久久久久久久电影| 国产精品99久久久久久动医院| 精产国品一二三区| 午夜精品视频一区| 成人好色电影| 999久久久| 久久亚洲欧美| 黄色一级大片在线免费观看| 欧美不卡一区二区三区四区| 日韩电影免费看| 亚洲一区二区三区免费看| 国产不卡在线播放| 国产91精品看黄网站在线观看| 精品国产欧美一区二区五十路 | www.久久精品| 亚洲免费视频二区| 欧美极品美女电影一区| 蜜桃视频欧美| 一级片免费在线观看视频| 欧美日韩国产一中文字不卡 | 国产精品午夜一区二区三区| 伊人网在线综合| 欧美三级xxx| а√天堂官网中文在线| 久久99精品久久久久子伦 | 欧美性视频一区二区三区| av大全在线| 日韩在线三级| 不卡av免费在线观看| 911美女片黄在线观看游戏| 国产69精品久久久久久| 68国产成人综合久久精品| 精品人妻一区二区三区视频| 日韩欧美亚洲国产另类| 欧美xxxx性|