精品欧美一区二区三区在线观看 _久久久久国色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修改
收藏
回復
舉報
回復
相關推薦
天天夜碰日日摸日日澡性色av| 国产成人综合精品在线| 国产chinesehd精品露脸| 免费影视亚洲| 国产亚洲欧美日韩日本| 成人亲热视频网站| 精品成人免费视频| 水蜜桃精品av一区二区| 亚洲第一偷拍网| 免费看黄色一级大片| 综合久久2o19| 国产午夜精品一区二区三区四区 | 欧美性x x x| 黄色成人美女网站| 7777女厕盗摄久久久| 大j8黑人w巨大888a片| 免费在线看黄网站| 久久综合国产精品| 成人91视频| 色婷婷久久综合中文久久蜜桃av| 激情综合久久| 久久精品国产96久久久香蕉| 北岛玲一区二区| 亚洲综合网站| 日韩一区二区影院| 爱情岛论坛vip永久入口| 国产传媒在线观看| 亚洲综合色丁香婷婷六月图片| 日本一区二区在线| 天天干天天干天天干| 国产在线播精品第三| 国产精品吹潮在线观看| 国产成人精品一区二三区| 欧美激情日韩| 丝袜情趣国产精品| 69精品无码成人久久久久久| 开心激情综合| 精品sm在线观看| 三级黄色片免费观看| 福利精品一区| 在线观看视频91| 91免费视频网站在线观看| av中文字幕在线看| 亚洲一区二区综合| 人妻激情另类乱人伦人妻| 黄色动漫在线| 亚洲日本在线观看| 亚洲不卡1区| avav免费在线观看| 国产视频一区在线播放| 欧美最大成人综合网| 青青操在线视频| 久久久久久亚洲综合影院红桃| 好吊色欧美一区二区三区四区| 黄色片一区二区| 国产69精品一区二区亚洲孕妇| 成人激情视频在线| 国产精品嫩草影院精东| 国产制服丝袜一区| 91香蕉视频在线下载| aaa一区二区| 丁香一区二区三区| 国产丝袜不卡| 五月婷婷六月丁香综合| 久久一留热品黄| 日韩国产在线一区| 999在线视频| ...av二区三区久久精品| 三年中国中文在线观看免费播放| 国产美女在线观看| 亚洲欧美激情插| 日本aa在线观看| 大桥未久在线视频| 在线观看亚洲专区| 亚洲精品成人在线播放| 中文字幕一区二区三区日韩精品| 日韩成人在线免费观看| 国精品无码人妻一区二区三区| 成人精品天堂一区二区三区| www欧美日韩| 国产精品19乱码一区二区三区| 国产精品久久777777毛茸茸| 国产精品第一区| 97精品人妻一区二区三区在线| 国产美女精品在线| 国产精品一区在线播放| 免费国产在线观看| 国产精品久久久久久亚洲伦 | 中文字幕在线1| 91欧美在线| 久久久久久久久综合| 久久久久99精品成人片三人毛片| 日韩成人一区二区三区在线观看| 亚洲a在线播放| 天堂影院在线| 国产精品久久久久久久裸模| 国产精品va在线观看无码| 免费看av不卡| 日韩精品专区在线影院重磅| 在线观看福利片| 91成人影院| 热草久综合在线| 国产精品久久久久久久久久久久久久久久久久| 国产成人在线视频网址| 日本午夜精品电影| av电影在线免费| 欧美日韩中文一区| 中文字幕乱码在线| 欧美粗暴jizz性欧美20| 欧美中文在线字幕| 精品毛片一区二区三区| 国产欧美日韩激情| 欧美网站免费观看| 欧美大片91| 中文字幕久久亚洲| 黄色一级片免费在线观看| 国产盗摄女厕一区二区三区| 视频在线观看成人| 国产精品25p| 欧美一区二区国产| 美国美女黄色片| 亚洲自啪免费| 精品国产乱码久久久久久88av| 毛片在线播放a| 在线视频观看一区| 亚洲乱码国产乱码精品精大量| 欧美成人一品| 1卡2卡3卡精品视频| 色网站免费在线观看| 91久久免费观看| 免费不卡的av| 黄色日韩在线| 国产成人亚洲欧美| 日本三级在线观看网站| 在线不卡中文字幕| 精品一区二区在线观看视频| 全部av―极品视觉盛宴亚洲| 欧美精品v日韩精品v国产精品| 国产在线精彩视频| 亚洲精品videossex少妇| 麻豆亚洲av熟女国产一区二| 国产一区啦啦啦在线观看| 一区二区在线中文字幕电影视频| 电影一区二区| 中文字幕欧美日韩| 中文字幕男人天堂| 中文字幕精品综合| 男操女免费网站| 欧美自拍偷拍| 国产v综合ⅴ日韩v欧美大片 | 国产极品尤物在线| 国内毛片久久| 91精品国产高清久久久久久91| 黄色av小说在线观看| 亚洲大尺度视频在线观看| 国产在线不卡av| 亚洲久久一区二区| 欧美日韩电影一区二区| 成人视屏在线观看| 色阁综合伊人av| 97免费观看视频| 亚洲精品一二三| 超碰caoprom| 久久久久国产精品一区三寸| 欧美日韩国产精品一卡| 国产欧美自拍| 久久精品国产精品亚洲| 国产高清免费在线观看| 午夜欧美在线一二页| 国产熟女高潮一区二区三区| 久久精品动漫| 在线国产精品网| 91成人精品在线| 欧美综合第一页| 1pondo在线播放免费| 91精品国产麻豆| 国产精品99精品无码视| 久久九九久久九九| 午夜啪啪小视频| 在线免费高清一区二区三区| 欧美自拍资源在线| 精品一区91| 欧美在线影院在线视频| 午夜在线小视频| 亚洲白虎美女被爆操| 成人免费毛片视频| 亚洲免费观看在线观看| 三叶草欧洲码在线| 久久99久久精品| 一二三四视频社区在线| 日韩av大片| 国产免费一区二区三区| 欧美三区四区| 久久久久久久久久久免费| 玖玖综合伊人| 精品美女被调教视频大全网站| 中文字幕69页| 亚洲一区精品在线| 国产三级精品三级观看| 99久久免费国产| 中文字幕线观看| 国产视频一区免费看| 香蕉视频在线网址| 久久爱www成人| 99中文视频在线| 色综合视频一区二区三区日韩| 性欧美视频videos6一9| 自拍视频在线播放| 日韩av在线直播| www.热久久| 欧美日韩一区在线观看| 久久黄色精品视频| 亚洲一区二区不卡免费| 一级性生活免费视频| 久久久久久久综合| 国产性生活毛片| 国产成人午夜视频| 999这里有精品| 视频一区视频二区在线观看| 成人午夜视频在线观看免费| 亚洲精品电影| 亚洲欧洲一区二区| 国产一区日韩| 欧美日韩一区二| 老司机精品在线| 99久久99久久精品国产片| 四虎影视国产精品| 国产精品中文字幕在线| 日本精品在线一区| 国产激情久久久久| 成人黄色免费短视频| 51视频国产精品一区二区| 黑人精品视频| 欧美华人在线视频| 美女精品导航| 欧美二区乱c黑人| 狂野欧美激情性xxxx欧美| 欧美大片va欧美在线播放| dj大片免费在线观看| 久久中文字幕国产| 超碰在线网址| 久久久91精品国产一区不卡| 欧美性天天影视| 在线观看成人黄色| av大片在线看| 日韩视频免费中文字幕| 激情成人四房播| 久国内精品在线| 国产精品69xx| 欧美亚洲国产日韩2020| 黄色综合网址| 国产精品亚洲аv天堂网| 国产亚洲精彩久久| 成人国产精品久久久| 激情五月综合婷婷| 91香蕉视频在线下载| 国产一区二区在线视频你懂的| 国产亚洲情侣一区二区无| 色综合www| 日本一区二区三区四区高清视频| 欧美色女视频| 亚洲v欧美v另类v综合v日韩v| 国产高清一区| 欧美交换配乱吟粗大25p| 今天的高清视频免费播放成人| 国产在线播放观看| 国产日韩免费| av丝袜天堂网| 激情成人午夜视频| 欧美一级大片免费看| jizz一区二区| 免费看裸体网站| 最新欧美精品一区二区三区| 日日骚一区二区三区| 亚洲h在线观看| 人人妻人人爽人人澡人人精品| 欧美日韩久久久| 农村少妇久久久久久久| 亚洲激情中文字幕| a天堂在线资源| 色综合久久久久久中文网| 在线看片国产福利你懂的| 91精品国产自产在线| 999在线精品| 日韩中文一区| 影音先锋日韩在线| 欧美日韩一道本| 美女国产一区二区三区| 丰满少妇一区二区三区专区| 久久综合久久综合亚洲| 99久久精品久久亚洲精品| 亚洲va天堂va国产va久| 天天干天天操天天操| 日韩亚洲欧美一区二区三区| 毛片在线播放网址| 九九精品在线观看| 欧美黄色网页| 国产精品久久久久久久久婷婷 | 午夜理伦三级做爰电影| 久久久久一区二区三区四区| 情侣偷拍对白清晰饥渴难耐| 亚洲午夜免费福利视频| 日本熟妇一区二区三区| 精品欧美久久久| 8888四色奇米在线观看| 国产做受高潮69| 亚洲ww精品| 蜜桃久久影院| 亚洲手机在线| 99九九99九九九99九他书对| 91色|porny| 久草免费新视频| 欧美日韩国产影片| 性xxxx18| 色综合五月天导航| 国产精品久久久久久av公交车| 久久综合九色综合久99| 欧美激情91| 久久人人爽人人片| 国产欧美日韩另类一区| 探花视频在线观看| 日韩欧美国产小视频| 黄色小网站在线观看| 国产精品久久久久久久久久久久久久 | 中国一级片在线观看| 日本精品一级二级| 亚洲aaa在线观看| 97久久精品人搡人人玩| 九九99久久精品在免费线bt| 亚洲精品中文字幕乱码三区不卡 | 一区二区三区产品免费精品久久75| 国产成人av免费| 亚洲毛片在线看| 天堂√中文最新版在线| 国产精品乱码| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产视频911| 久久久久久在线观看| 亚洲国模精品一区| 成人在线黄色电影| 好吊色欧美一区二区三区| 激情成人综合| 成人手机在线免费视频| 婷婷综合久久一区二区三区| 日韩一级免费视频| 欧美性受xxxx黑人猛交| 免费观看成人www动漫视频| 免费看黄在线看| 93久久精品日日躁夜夜躁欧美| 欧美精品亚洲精品日韩精品| 亚洲精品久久久久久久久久久久 | 激情久久五月| 丰满岳乱妇一区二区| 婷婷激情综合网| 日韩精品视频无播放器在线看 | 久久国产色av| 日韩中文字幕视频网| av在线播放亚洲| 久久―日本道色综合久久| 亚洲精品国产无码| 少妇精69xxtheporn| 欧美久久亚洲| 欧美精品久久久久久久久久久| 99久久夜色精品国产网站| 亚洲 欧美 日韩 在线| 自拍偷拍亚洲精品| 一区二区三区高清在线观看| 久草视频国产在线| 久久蜜桃av一区精品变态类天堂 | 国产精品免费精品自在线观看| 男女爱爱视频网站| 波多野结衣中文字幕一区二区三区| 亚洲高清毛片一区二区| 中文字幕亚洲精品| 免费观看在线一区二区三区| 免费不卡av在线| 国产欧美一区二区三区在线老狼| av中文字幕观看| 性日韩欧美在线视频| 日韩电影在线视频| 91精品国产高清91久久久久久| 欧美日韩免费在线观看| 大乳在线免费观看| 91免费看网站| 久久精品免费| 久草综合在线视频| 精品免费国产一区二区三区四区| 人人视频精品| 69精品丰满人妻无码视频a片| av在线播放一区二区三区| 中国女人真人一级毛片| 欧美激情精品久久久久久久变态 | www国产91| 日韩精品导航| 国产大片一区二区三区| 午夜电影一区二区三区| 久操视频在线免费播放| 九九九久久久| 国产成人综合在线| 亚洲午夜无码久久久久|