精品欧美一区二区三区在线观看 _久久久久国色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研究生

收藏
回復
舉報
回復
相關推薦
国产成人久久久久| 久久久噜噜噜www成人网| 国产精品视频在线观看免费 | 久久亚洲欧美| 中文在线不卡视频| 超级砰砰砰97免费观看最新一期 | 丁香五六月婷婷久久激情| 日本高清一区| 国产精品久久无码一三区| 唐朝av高清盛宴| a√资源在线| 国产成人综合亚洲91猫咪| 26uuu亚洲伊人春色| 中国1级黄色片| 久草精品视频| 欧美日韩大陆一区二区| 欧美,日韩,国产在线| 中国日本在线视频中文字幕| 岛国av在线一区| 国产精品一区二区女厕厕| 五月天婷婷丁香| 欧美一区二区三区另类| 亚洲性视频网站| 亚洲少妇一区二区| 中文幕av一区二区三区佐山爱| 精品国产乱码久久久久久婷婷| 亚洲最新在线| 欧美一级性视频| 国产在线精品不卡| 国产精品av网站| 欧美日韩一二三四区| 午夜精品久久久久99热蜜桃导演 | 91九色最新地址| h无码动漫在线观看| 1769在线观看| 日本一区二区三区dvd视频在线| 国产欧美日韩综合一区在线观看| 97人妻精品一区二区三区| 三级久久三级久久| 欧美做受高潮1| 女人十八岁毛片| 日韩视频一区| 欧美激情免费在线| 免费毛片在线播放免费| 91精品电影| 日韩小视频在线观看| 日本乱子伦xxxx| 亚洲美女久久| 国产视频久久久久| 欧美熟妇精品黑人巨大一二三区| 六月丁香久久丫| 亚洲电影成人av99爱色| 国产 xxxx| 鲁大师精品99久久久| 精品久久国产字幕高潮| 911亚洲精选| 好吊妞视频这里有精品| 美女久久网站| 一区二区激情小说| 精品91一区二区三区| 日本在线观看免费| 国产精品高清亚洲| 男插女免费视频| 日韩另类在线| 欧美日韩美女在线观看| 日韩人妻精品无码一区二区三区| 亚洲精品日产| 在线日韩一区二区| 91 在线视频观看| 国产一区二区三区免费观看在线| 日韩视频在线永久播放| 亚洲欧美综合视频| 神马香蕉久久| 尤物yw午夜国产精品视频明星| 色屁屁草草影院ccyy.com| 超碰成人久久| 色综合91久久精品中文字幕| 精品视频久久久久| 亚洲中午字幕| 国产欧美一区二区三区视频| 国产丝袜视频在线观看| 成人免费的视频| 欧美日韩一区综合| 色网站免费在线观看| 一区二区三区日韩精品视频| 欧美视频在线播放一区| 成人免费福利| 欧美va亚洲va| 国产免费一区二区三区网站免费| 久久一区二区三区电影| 久久久久久国产精品| 91丝袜一区二区三区| 九九九久久久精品| 国产综合18久久久久久| 国产小视频在线播放| 亚洲视频一二区| 国模视频一区二区| 国产精品自拍片| 成人涩涩视频| 亚洲福利视频网| 人人爽人人爽人人片| 综合国产精品| 国产精品福利在线观看| 亚洲精品久久久狠狠狠爱| 久久精品亚洲麻豆av一区二区 | 秋霞午夜在线观看| 亚洲成人在线观看视频| 999精彩视频| 99国产精品久久一区二区三区| 亚洲欧美日韩综合| 午夜剧场免费在线观看| 久色成人在线| 国产欧美一区二区三区另类精品| 1024国产在线| 日韩欧美一区二区三区久久| 日本女人性视频| jlzzjlzz亚洲女人| 欧美在线视频一区二区| 亚洲精品国产片| 中文字幕亚洲欧美在线不卡| 日本黄色三级大片| 国产无遮挡裸体免费久久| 日韩一级黄色av| 欧美成人精品网站| www国产成人免费观看视频 深夜成人网| 亚洲第一页在线视频| 秋霞国产精品| 亚洲精品视频中文字幕| 精品深夜av无码一区二区老年| 另类小说欧美激情| 欧洲av一区二区嗯嗯嗯啊| 伊人久久在线观看| 国产91在线精品| 亚洲片av在线| 色婷婷av国产精品| 99久久国产综合精品女不卡| 毛片av在线播放| 精品中文字幕一区二区三区| 色婷婷**av毛片一区| 亚洲永久精品一区| 久久精品日韩一区二区三区| 日韩中文字幕在线视频观看| 成午夜精品一区二区三区软件| 久久影院模特热| 国产精品一区二区av白丝下载| 国产精品国模大尺度视频| 15—17女人毛片| 欧美成人自拍| 成人www视频在线观看| 麻豆传媒在线免费| 欧美另类高清zo欧美| 精品在线观看一区| 精品一区二区av| 色哺乳xxxxhd奶水米仓惠香| www一区二区三区| 久久综合色88| 亚洲精品久久久狠狠狠爱 | 18精品爽视频在线观看| 国产精品香蕉一区二区三区| 97在线免费视频观看| 欧洲一区在线| 午夜免费日韩视频| 免费资源在线观看| 奇米四色…亚洲| 精品少妇一区二区三区| 成人午夜福利一区二区| 日韩成人精品视频| 一区二区在线不卡| 精品一区二区三区中文字幕视频 | 久久电影网站| 亚洲激情在线观看| 中文字幕在线天堂| 国产精品国产三级国产| 久久精品一二三四| 99热免费精品| 亚洲国产精品毛片| 久久69av| 欧美亚洲国产精品| h视频在线观看免费| 欧美一级片免费看| 圆产精品久久久久久久久久久| 久久久精品天堂| 欧美性受xxxxxx黑人xyx性爽| 欧美日本一区二区视频在线观看| 国产日韩一区欧美| 日本美女久久| 欧美国产第一页| 精品影院一区| 91精品国产欧美一区二区18 | 中文字幕第4页| 激情文学综合插| av日韩一区二区三区| 精品成av人一区二区三区| 成人做爽爽免费视频| 超黄网站在线观看| 中文字幕自拍vr一区二区三区| 国产成年妇视频| 日本电影亚洲天堂一区| 中国毛片直接看| 久久久亚洲精品石原莉奈| 亚洲va综合va国产va中文| 99精品视频免费| 免费久久久久久| 欧美女优在线视频| 97碰碰视频| 成人黄色图片网站| 欧美极品美女电影一区| av电影在线观看| 精品福利一区二区三区| 国产精品玖玖玖| 日本乱人伦一区| 国产精品16p| 一区二区中文视频| 精品无码国产污污污免费网站| 风间由美性色一区二区三区 | 国产亚洲欧洲一区高清在线观看| 韩国三级丰满少妇高潮| 人禽交欧美网站| 能在线观看的av| 影音先锋中文字幕一区二区| 亚洲狠狠婷婷综合久久久| 岳的好大精品一区二区三区| 99久久自偷自偷国产精品不卡| 国产精品美女午夜爽爽| 日产精品99久久久久久| av中文字幕电影在线看| 久久视频国产精品免费视频在线| 久操视频免费看| 自拍视频在线网| 日韩西西人体444www| 一级特黄aa大片| 欧美影院一区二区三区| youjizz在线视频| 狠狠色狠色综合曰曰| 日本系列第一页| 亚洲国产乱码最新视频| 欧美精品一区二区蜜桃| 亚洲欧美区自拍先锋| 五月天免费网站| 国产精品区一区二区三区| 亚洲黄色小说视频| 久久先锋影音av鲁色资源网| 特大黑人巨人吊xxxx| 波多野洁衣一区| 亚洲一区二区三区综合| 成人午夜电影小说| 一级黄色片毛片| 成+人+亚洲+综合天堂| 久久性爱视频网站| 成人精品一区二区三区四区| 人妻 丝袜美腿 中文字幕| 国产成人免费视频网站高清观看视频| 成人高清在线观看视频| 高清成人免费视频| 性高潮免费视频| 99久久免费国产| 国产精品无码网站| 久久久蜜桃精品| 人妻aⅴ无码一区二区三区| 成人av中文字幕| 性欧美13一14内谢| 最新亚洲精品| 久热精品视频在线免费观看| 国产在线观看av| 欧美激情亚洲自拍| 涩涩视频在线免费看| 人九九综合九九宗合| 成人黄色在线| 亚洲永久在线观看| 久久人人爽人人爽人人片av不| 久久久久久久久久久久久久久久av| 婷婷成人影院| 夜夜爽www精品| 欧美jizzhd精品欧美巨大免费| 美女黄色免费看| 先锋亚洲精品| 九九热免费在线观看| 国产成人在线看| 国产三级视频网站| 国产精品国产三级国产普通话蜜臀 | 久久精品欧美日韩| 免费高清在线观看电视| 精品久久久精品| 精品久久久久久久久久久国产字幕| 欧美日韩在线精品一区二区三区激情| 国产成人精品一区二区无码呦| 亚洲精品v欧美精品v日韩精品| 国产高清在线| 色综合视频网站| 日韩三区免费| 国产精品免费在线播放| 日本乱理伦在线| 自拍偷自拍亚洲精品播放| 一本色道久久88| 香港成人在线视频| 亚洲一区二区三区高清视频| 精品久久久久久亚洲综合网| 国产香蕉在线| 欧美激情乱人伦一区| 成人午夜sm精品久久久久久久| 丁香婷婷久久久综合精品国产| jvid福利在线一区二区| 霍思燕三级露全乳照| 韩国一区二区视频| 亚洲综合色一区| 亚洲国产美女搞黄色| 正在播放木下凛凛xv99| 亚洲精品电影网| 在线中文字幕第一页| 国产精品96久久久久久| 国产在线播放精品| 午夜啪啪福利视频| 人人精品人人爱| 国产精品1000部啪视频| 亚洲综合在线第一页| 91福利在线观看视频| 伊人伊成久久人综合网小说| 国产理论在线| 99蜜桃在线观看免费视频网站| 欧美高清在线| 亚洲成色www.777999| 91女人视频在线观看| 久久久久久久久久久久久久久久久 | 欧美一区二区三区网站| 91精品国产综合久久久蜜臀粉嫩| 国产午夜在线视频| 欧洲美女免费图片一区| a级日韩大片| 无码日本精品xxxxxxxxx| 国模一区二区三区白浆| 久久午夜精品视频| 欧洲一区在线电影| 国产在线视频网| 国产成人avxxxxx在线看| 四虎影视精品| 久久久久人妻精品一区三寸| 中文不卡1区2区3区| 亚洲桃花岛网站| 成人免费看视频网站| 久久综合久久久| 亚洲一区中文| 国产成人精品无码免费看夜聊软件| 性做久久久久久久免费看| 日本高清视频在线| 97在线视频免费播放| 国产精品xxx在线观看| 欧美精品卡一卡二| 不卡视频一二三四| 欧美精品亚洲精品日韩精品| 日韩成人中文字幕在线观看| 日韩精品av| 欧美激情论坛| 日韩不卡在线观看日韩不卡视频| 亚洲精品一区二区三区影院忠贞| 在线精品视频一区二区| 成a人片在线观看www视频| 国产精品亚洲片夜色在线| 欧美国产美女| 国产免费无码一区二区| 亚洲va在线va天堂| 嫩草研究院在线观看| 国产精品99一区| **女人18毛片一区二区| 久久久久中文字幕亚洲精品 | 99热精品国产| 免费黄色片视频| 精品国产一区二区三区久久久狼 | 亚洲一区二区免费视频软件合集| 久久精品久久久精品美女| 亚洲国产123| 精品福利视频一区二区三区| 伊人久久综合一区二区| 亚洲欧美日韩精品综合在线观看| 国产一区在线看| 日韩欧美a级片| 最近2019年中文视频免费在线观看 | 国产精品亚洲产品| 国产精品免费观看高清| 激情开心成人网| 亚洲欧美国产精品桃花| 国产成人欧美日韩在线电影| 亚洲第一在线播放| www.国产精品一二区| 老司机凹凸av亚洲导航| 日韩av片网站| 亚洲成av人**亚洲成av**| 国产二区视频在线观看| 99精品欧美一区二区三区| 久久国产一二区| 亚洲熟女www一区二区三区| 日韩av在线播放资源| 羞羞视频在线观看一区二区| 欧美二区在线视频| 中文字幕佐山爱一区二区免费| 人妻中文字幕一区| 国产精品美女主播| 中文一区二区| 亚洲一级生活片| 国产亚洲免费的视频看| 国产人妖ts一区二区|