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

RAG 為何能瞬間找到答案?向量數據庫告訴你

發布于 2025-8-27 06:39
瀏覽
0收藏

了解 Hierarchical Navigable Small World (HNSW) 算法如何為當今的 RAG 系統提供動力

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區


Retrieval-Augmented Generation (RAG) 是為 Large Language Models (LLMs) 添加外部知識的重要工具。

幾乎每個 RAG 系統都包含一個向量數據庫,用于執行 semantic search。在這種搜索中,存儲在向量數據庫中的 document embeddings 會與用戶的 query embedding 進行比較。

一個基本的 RAG 系統包括一個 embedding model、一個 vector database 和一個 LLM。文檔的 embeddings 會提前存儲(離線)。當你提出一個問題時,輸入會被嵌入并與存儲的 embeddings 進行匹配。最佳結果會被發送到 LLM,其中 retriever(由 embedding model 和數據庫組合而成)協助 generator(LLM)。一個基本的 RAG 系統包括一個 embedding model、一個 vector database 和一個 LLM。向量數據庫用于找到與查詢匹配的 top-K 文檔。

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區

實際上,將查詢向量與數據庫中數百萬個 embedding vectors 進行比較以找到完美匹配是非常慢的。為了更快,這些向量數據庫通常返回近似匹配的結果。

讓我們更深入地看看向量數據庫是如何工作的,并探索 Hierarchical Navigable Small World (HNSW) 搜索算法,它為當今許多 RAG 系統提供了動力。

目錄

? 基本 Semantic Search

? Navigable Small World (NSW)

? Hierarchical Navigable Small World (HNSW)

? HNSW 在實踐中的應用

? 結論

? 參考文獻

基本 Semantic Search

在 semantic search 中,embedding model 將文本轉換為一個 dense vector,捕捉文本的含義。

通過使用相同的 embedding model 將查詢和文檔都轉換為向量,我們可以通過識別 query vector 的 nearest neighbors 來執行 semantic search。這個過程被稱為 K-nearest neighbors (KNN) 搜索。

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區

在 RAG 系統中,retriever 的任務是找到與用戶查詢最相似的文檔。在這個簡單示例中,文檔1、5和7是從10個文檔中找到的三個最接近的匹配項。一個 RAG 系統中的基本 semantic search 示例。黑點表示使用 cosine distance 度量時,與查詢最接近的三個匹配項(共10個文檔)。圖片由作者提供。

為了找到 nearest neighbors,我們需要測量兩個向量之間的距離。通常使用的距離度量是 cosine distance,它關注兩個向量之間的角度,或 dot product。

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區

cosine distance 公式是 1 減去兩個向量 v 和 w 的 cosine similarity。圖片由作者提供。

然后,我們按距離排序并選擇 K 個最接近的匹配項。

然而,搜索所需的計算量隨著向量數據庫中的條目數量線性增加。例如,對于15個文檔,需要計算15個距離。

如果數據庫包含數百萬個文檔,我們每次查詢時都需要計算數百萬個距離。

為了更高效地解決這個問題,我們可以使用 approximate nearest neighbor (ANN) 搜索。

ANN 比 KNN 高效得多。然而,顧名思義,這些算法不保證返回最接近的匹配項。但在實踐中,它們通常已經足夠接近。

Navigable Small World (NSW)

Navigable Small World (NSW) 算法 [2] 是一種基于圖的 ANN 算法。圖是一種由 edges 和 vertices 組成的數據類型。

首先,我們一次性計算所有文檔之間的距離。接下來,我們構建一個 proximity graph,為數據庫中的每個文檔創建一個 vertex。每個文檔通過 edge 與其幾個最近的鄰居相連。超參數 M 決定每個文檔的最大連接數。

使用上面的例子,以下是一個 NSW proximity graph 的樣子:

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區

一個 NSW proximity graph,展示文檔作為 vertices,通過對應距離的 edges 相互連接。一個包含10個文檔的 NSW proximity graph,每個 vertex 最多有 M=3 個 edges。圖片由作者提供。

在構建圖之后(只需做一次),它就可以用于高效搜索。NSW 是一種貪婪算法,在每一步都做出局部最優選擇。

NSW 的核心思想是,每個文檔都可以通過幾次“跳躍”從其他任何文檔到達。

為了找到與查詢最接近的文檔,我們隨機選擇一個文檔作為起點,計算查詢與當前文檔的所有連接鄰居之間的距離。然后選擇距離最短的文檔。

如果查詢與所選文檔的距離小于查詢與當前文檔的距離,我們就移動到所選文檔。

然后,算法重復進行。如果查詢與當前文檔的距離小于與所有鄰居的距離,那么就找到了一個局部最小值,并返回 top-K 文檔。

NSW 算法針對一個示例查詢是這樣的:

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區

給定一個查詢和一個隨機選擇的起點,算法從節點9到7,再到5,然后到3。一個貪婪搜索的示例,包含一個查詢和一個隨機選擇的起點。圖片由作者提供。

我們還可以用不同的隨機起點重復整個過程,以找到更好的解決方案。

Hierarchical Navigable Small World (HNSW)

HNSW 通過添加 hierarchical layers 改進了 NSW,加快了搜索算法的速度 [3]。

HNSW 使用多層圖。最低層(layer 0)包含完整的 NSW 圖和所有文檔。

在 HNSW 中,創建多個層,每一層進一步減少文檔數量。在一個簡單示例中,我們可能只使用兩層,如下圖所示。

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區

一個包含 HNSW layer 0(完整圖)和 layer 1(僅兩個 vertices)的 Python 子圖。一個包含兩層和10個文檔的 HNSW 圖。圖片由作者提供。

搜索算法從最高層開始,運行方式類似于 NSW。在給定層中找到局部最小值后,我們將該文檔作為下一較低層的起點。

最終,我們到達 layer 0 并返回 top-K 文檔。

這個過程就像最初放大以在最高層找到一個粗略匹配。然后,我們逐層縮小以找到更好的匹配。

雖然 HNSW 在搜索時比 KNN 快得多,但它需要大量計算來創建多層 proximity graph。在插入、更新或刪除數據庫中的文檔時,需要額外的計算來更新或重新創建圖。

此外,基于圖的搜索算法(如 HNSW)需要更多內存來存儲圖結構和向量 embeddings。

HNSW 受到許多流行向量數據庫的支持,如 Chroma、Qdrant、Weaviate、Milvus、Faiss、Vespa、Pinecone 和 Elasticsearch,通常作為 semantic search 的默認 ANN 算法。

HNSW 在實踐中的應用

HNSW 通常是大多數向量數據庫的默認設置。這使得它在實踐中非常易于使用。

例如,我們將使用 Python 中的開源向量數據庫 Chroma,可以通過命令 ??pip install chromadb?? 安裝。

首先,創建一個本地 Chroma 數據庫,然后為你的數據創建一個新 collection。在這里,我們可以明確設置 HNSW 算法的超參數,例如距離度量 ??space=cosine??? 和每個文檔在圖中的最大鄰居數 ??max_neighbors=16??。

import chromadb

# 初始化 Chroma Client
client = chromadb.Client()

# 在 Chroma 中創建一個 collection,明確配置 HNSW
collection = client.create_collection(
    name="my-collection",
    cnotallow={"hnsw": {"space": "cosine", "max_neighbors": 16}},
)

有趣的是,Chroma 默認使用 L2 norm(即 Euclidean distance)作為距離度量。然而,大多數 embedding models 都是為 cosine distance 優化的。

接下來,我們將文檔添加到 collection 中,并使用 HNSW 搜索算法在后臺搜索數據庫。

# 創建示例文檔
documents = [
    "This is the first document.",
    "This document is about machine learning.",
    "Here is a third document about natural language processing.",
]

# 將文檔插入 collection
collection.add(ids=["doc1", "doc2", "doc3"], documents=documents)

# 搜索最相似的 top 1 文檔
search_results = collection.query(query_texts=["NLP"], n_results=1)

# 打印搜索結果
print(search_results)

這應該返回第三個文檔。

結論

隨著 LLMs 的興起,向量數據庫變得越來越重要,現在幾乎每個 RAG 系統都在使用它們。

大多數流行的向量數據庫都支持 HNSW,它通常被用作默認搜索算法。HNSW 和 NSW 都是 approximate nearest neighbor 算法,用于找到足夠接近的匹配項。

HNSW 和 NSW 的搜索復雜度為 log(N),對于大小為 N 的數據集,而 K-nearest neighbor 搜索的復雜度是線性的。這對于包含數百萬或更多條目的數據庫來說有巨大差異。

RAG 為何能瞬間找到答案?向量數據庫告訴你-AI.x社區

一個展示 O(N) 與 O(log N) 時間復雜度的圖形。相比線性復雜度,對數復雜度增長不明顯。時間復雜度增長:O(N) 隨輸入大小線性增加,而 O(log N) 增長慢得多。圖片由作者提供。

參考文獻

[1] Leon Eversberg 博士 (2025), Understanding Large Language Models and Generative AI: Inside the Technology Behind the Hype

??https://www.amazon.com/dp/B0FGJ67ZDC??

[2] A. Ponomarenko 等人 (2011), Approximate Nearest Neighbor Search Small World Approach, International Conference on Information and Communication Technologies & Applications

??https://www.iiis.org/CDs2011/CD2011IDI/ICTA_2011/PapersPdf/CT175ON.pdf??

[3] Yu. A. Malkov, D. A. Yashunin (2018), Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs, IEEE Transactions on Pattern Analysis and Machine Intelligence

??https://arxiv.org/pdf/1603.09320??

本文轉載自???AI大模型觀察站??,作者:AI研究生

收藏
回復
舉報
回復
相關推薦
香蕉久久夜色| 国产精品视频网| 国产精品无码永久免费不卡| 另类图片综合电影| 国产精品亲子乱子伦xxxx裸| 4444kk亚洲人成电影在线| 精品无码m3u8在线观看| 亚洲精品进入| 91精品久久久久久久99蜜桃 | 欧美午夜性色大片在线观看| 日韩电影免费观看在| 国产特级黄色片| 国产亚洲毛片在线| 欧美成人一区在线| 山东少妇露脸刺激对白在线| 999精品视频在这里| 一本一道久久a久久精品| 经典三级在线视频| 色视频在线观看免费| 国产一区日韩二区欧美三区| 日本久久亚洲电影| 中文字幕av免费在线观看| 亚洲人和日本人hd| 精品国产1区二区| 九九热99视频| 欧美精品高清| 精品久久久久久中文字幕大豆网 | 免费看黄色的视频| 成人在线视频你懂的| 欧美精品粉嫩高潮一区二区| a√天堂在线观看| 日本大胆在线观看| 亚洲欧美一区二区久久 | 亚洲av人人澡人人爽人人夜夜| 国产精品美女午夜爽爽| 一本大道久久a久久综合| 精品无码一区二区三区在线| 怡红院在线播放| 国产精品久久久久久久久图文区| 欧美一级二级三级九九九| 欧美视频xxx| 国产99精品国产| 91嫩草在线| 国产精品久久影视| 六月丁香婷婷久久| 国产伦精品免费视频| 日韩精选在线观看| 日韩制服丝袜先锋影音| 欧美一级免费视频| 国产成人无码av| 一区二区三区四区五区在线| 高清在线视频日韩欧美| 久久成人国产精品入口| 极品日韩av| 国产做受69高潮| 国产第100页| 亚洲精品1区2区| 久久久久久有精品国产| 精品在线视频观看| 99视频一区| 国产91精品久| 精品人妻一区二区色欲产成人| 久久久夜夜夜| 国产精品爽黄69| 国产精品呻吟久久| 国产高清精品网站| 国产一区二区在线观看免费播放| 日本高清视频www| 99视频国产精品| 欧美日韩一区二区三区在线观看免| 日中文字幕在线| 久久久91精品国产一区二区精品| 天堂一区二区三区| 精品51国产黑色丝袜高跟鞋| 亚洲美女视频在线观看| 国产一二三在线视频| 欧洲一区精品| 欧美午夜理伦三级在线观看| 国产欧美激情视频| 成人性生交大片免费看96| 日韩成人在线网站| 91视频免费在观看| 欧美精品啪啪| 欧美制服第一页| 中文字幕一区二区三区免费看 | 久久久精品人妻一区二区三区| 波多野结衣一区二区三区免费视频| 精品国产伦理网| 泷泽萝拉在线播放| 国产精品99一区二区三| 国语自产偷拍精品视频偷 | 欧美一级免费在线观看| 三级理论午夜在线观看| 国产精品热久久久久夜色精品三区| 亚洲图片欧洲图片日韩av| 在线免费av导航| 欧美日在线观看| 日韩不卡一二三| 精品国产一区二区三区成人影院| 一区二区中文字幕| 美女视频黄免费| 久久一区视频| 亚洲资源在线看| 欧美一区二区少妇| 亚洲免费观看高清完整版在线| 久久视频这里有精品| 日本.亚洲电影| 精品国精品自拍自在线| 日本免费www| 99精品视频免费全部在线| 成人亚洲综合色就1024| 青青青草网站免费视频在线观看| 国产精品家庭影院| 久久成人免费观看| 粉嫩av国产一区二区三区| 亚洲天堂av女优| 国产精选第一页| 国产在线观看一区二区| 欧洲精品在线一区| a级片免费在线观看| 欧美日韩国产经典色站一区二区三区 | 成人一级黄色大片| 国产精品一区毛片| 国产精品一区二区三区观看| 老司机在线永久免费观看| 欧美午夜性色大片在线观看| 亚洲欧美日韩色| 亚洲精品午夜av福利久久蜜桃| 国产精品国产三级国产aⅴ浪潮 | 久久精品一区中文字幕| 精品国产xxx| zzijzzij亚洲日本少妇熟睡| 成人毛片100部免费看| 欧美高清xxx| 国产亚洲激情在线| 国产suv精品一区二区33| 99re这里都是精品| 青青青青草视频| 成人av婷婷| 欧美日韩国产成人| 国产黄色高清视频| 亚洲免费视频中文字幕| 亚洲一二区在线观看| 国产精品久久观看| 91精品久久久久久久久久久久久久| 嫩草在线播放| 色婷婷久久一区二区三区麻豆| 理论片大全免费理伦片| 亚洲日本欧美| 精品国产一区二区三区麻豆小说 | 37p粉嫩大胆色噜噜噜| 亚洲国产激情| 韩国一区二区三区美女美女秀| 色呦呦久久久| 精品乱码亚洲一区二区不卡| 九九免费精品视频| 成人美女视频在线观看18| 国产美女主播在线| 精品国产一区二区三区不卡蜜臂 | 国产精品12p| 成人综合日日夜夜| 欧美国产日韩在线| 无码国产伦一区二区三区视频| 午夜国产精品一区| 蜜桃精品成人影片| 奇米精品一区二区三区四区| 亚洲午夜精品福利| 精品精品视频| 久久久中精品2020中文| 日韩欧美在线观看一区二区| 色综合久久九月婷婷色综合| 天天躁夜夜躁狠狠是什么心态| 蜜桃视频一区二区三区在线观看 | 在线日韩欧美| 蜜桃av久久久亚洲精品| 成人av集中营| 欧美精品在线网站| 亚洲欧美一区二区三| 91福利在线看| 欧美黑人一级片| 99精品欧美一区二区三区小说| 日韩视频免费在线播放| 亚洲欧美网站在线观看| 精品国产aⅴ麻豆| 少妇在线看www| 中文字幕在线看视频国产欧美| 国产高清视频免费观看| 五月婷婷激情综合网| av手机在线播放| 成人午夜短视频| 久久精品影视大全| 黄色精品一区| 亚洲日本精品| 欧美三级电影在线| 成人免费看片视频| 小视频免费在线观看| 久久综合免费视频| 国产鲁鲁视频在线观看免费| 欧美一二三区精品| 亚洲无码精品一区二区三区| 亚洲精品欧美激情| 国产aⅴ激情无码久久久无码| 国产一区二区三区黄视频| 国产原创popny丨九色| 欧美激情777| 鲁丝片一区二区三区| 精品国产一区二区三区性色av| 日韩美女免费观看| 91桃色在线| 美日韩精品免费视频| 经典三级在线| 欧美精品一区二区三区蜜桃视频 | 亚洲成人第一| 农村少妇一区二区三区四区五区| 成人精品一区二区三区电影免费 | 国产综合久久| 一区二区精品在线观看| 亚州综合一区| 国产高清一区视频| 免费一级欧美在线观看视频| 日本不卡高字幕在线2019| 免费在线国产视频| 精品国产一区二区三区久久| 激情综合闲人网| 亚洲国产精品悠悠久久琪琪| 99re只有精品| 欧美日韩久久久| 亚洲精品一区二三区| 黄网站色欧美视频| 五月天婷婷丁香| 亚洲一区二区五区| 久草视频在线免费看| 最新国产成人在线观看| 自拍偷拍你懂的| 国产女主播一区| 色欲av无码一区二区三区| 成人av在线观| 欧美日韩一区二区三区四区五区六区| 黄页网站大全一区二区| 中文字幕久久av| 日本成人中文字幕| wwww.国产| 日韩国产在线观看| 亚洲少妇久久久| 日韩电影在线免费| www.天天射.com| 免费欧美在线视频| 欧美美女性视频| 激情五月婷婷综合| 男男受被啪到高潮自述| 国产精品一品二品| 久久黄色一级视频| 国产69精品久久777的优势| 能看毛片的网站| 高清久久久久久| 国产精品九九视频| 91在线精品一区二区| 蜜桃精品成人影片| 国产欧美日韩精品在线| 免费看的黄色录像| 亚洲天堂网中文字| 九九视频免费观看| 黄色91在线观看| www.中文字幕在线观看| 一道本成人在线| 亚洲系列第一页| 日韩一区二区三区四区| 黄色a在线观看| 亚洲欧美国产一本综合首页| av午夜在线| 欧美成人激情视频| 99热99re6国产在线播放| 日韩美女免费视频| 国产一区二区三区免费在线| 99久久精品免费看国产一区二区三区 | 免费av不卡在线观看| 97人人爽人人喊人人模波多 | 91在线无精精品白丝| 国产精品伦一区| 久久久国产精品人人片| 欧美日韩另类在线| 91在线公开视频| 亚洲精品一区二区在线观看| 国产在线观看黄| 久久综合色88| 在线观看涩涩| 亚洲一区二区三区乱码aⅴ蜜桃女| 91精品日本| 亚洲成人午夜在线| 亚洲经典自拍| 亚洲怡红院在线| 91啦中文在线观看| www青青草原| 日韩欧美在线免费| 性中国xxx极品hd| 国产亚洲欧洲在线| h片视频在线观看| 国产精品视频不卡| 久久国产精品免费精品3p| 亚洲视频在线二区| 国产亚洲精品bv在线观看| 992kp免费看片| 久久一区二区视频| 麻豆视频在线观看| 欧亚洲嫩模精品一区三区| 老熟妇高潮一区二区高清视频| 在线播放国产一区中文字幕剧情欧美| 欧美6一10sex性hd| 国产日韩精品入口| 网曝91综合精品门事件在线| 伊人久久在线观看| 美女网站视频久久| 永久免费成人代码| 婷婷一区二区三区| 亚洲av无码片一区二区三区| 中文日韩在线观看| 吉吉日韩欧美| 国产精品午夜av在线| 亚洲在线久久| 99re精彩视频| 久久久www成人免费无遮挡大片| 日韩精品成人在线| 精品久久久久久久人人人人传媒| 亚洲欧美视频一区二区| 国产成人精品av| 日韩av三区| 青青青青草视频| 成人黄色av电影| 久久免费视频99| 欧美一区二区三区系列电影| 3p视频在线观看| 国产成人精品久久二区二区91| 欧美久久香蕉| 日韩av综合在线观看| aaa国产一区| 五月天综合激情| 精品偷拍各种wc美女嘘嘘| h片在线观看视频免费| 国产精品久久久一区二区三区| 欧美色一级片| 麻豆tv在线观看| 亚洲资源在线观看| 丰满少妇高潮在线观看| 欧美激情videos| 国产精品久久久久av蜜臀| 欧美亚洲黄色片| 不卡电影免费在线播放一区| 国产一级久久久| 精品欧美乱码久久久久久 | 国产在线电影| 国产成人自拍视频在线观看| av一区二区高清| 午夜在线观看av| 日韩理论在线观看| 国产男女无套免费网站| 欧美日韩国产成人| 第四色在线一区二区| 九一国产精品视频| 久久综合九色综合欧美98| 欧美特级黄色片| 最近2019中文字幕第三页视频| 999精品视频在线观看| 看一级黄色录像| 成人午夜免费电影| chinese国产精品| 日韩在线播放av| 亚洲国产aⅴ精品一区二区| 国产一区二区三区小说| 26uuu色噜噜精品一区| 艳妇乳肉豪妇荡乳av无码福利 | 日本一区视频在线播放| 免播放器亚洲一区| 精品欧美一区二区久久久久| 精品91自产拍在线观看一区| 亚洲最大网站| 亚洲综合网中心| 成人午夜精品一区二区三区| 国产成人精品777777| 久久久国产一区| 精品午夜电影| 中文字幕免费高清在线| 亚洲成av人片一区二区三区| 国内精品一区视频| 亚洲一区二区三区在线免费观看| 亚洲精品在线二区| 精品视频第一页| 亚洲精品国产品国语在线| 中韩乱幕日产无线码一区| 69精品丰满人妻无码视频a片| 久久蜜桃av一区二区天堂 | 亚洲国产精品成人一区二区| 性欧美hd调教| 少妇高潮大叫好爽喷水| 91丝袜美腿高跟国产极品老师| 国产一区二区三区四区视频| 91av视频在线播放| 欧美黄色精品| www.日本高清视频| 精品亚洲va在线va天堂资源站| 国产精品视频一区二区三区|