<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>向量資料庫 on Intellectual Guides</title><link>https://ckw19810413.github.io/tags/%E5%90%91%E9%87%8F%E8%B3%87%E6%96%99%E5%BA%AB/</link><description>Recent content in 向量資料庫 on Intellectual Guides</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><lastBuildDate>Tue, 18 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ckw19810413.github.io/tags/%E5%90%91%E9%87%8F%E8%B3%87%E6%96%99%E5%BA%AB/index.xml" rel="self" type="application/rss+xml"/><item><title>每日研究生概念寓言故事：階層式可導航小世界 (HNSW)</title><link>https://ckw19810413.github.io/blog/obsidian-cellar-hnsw/</link><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid>https://ckw19810413.github.io/blog/obsidian-cellar-hnsw/</guid><description>&lt;p&gt;晚上好！為您送上今天的「每日研究生概念寓言故事」。&lt;/p&gt;
&lt;h2 id="黑曜石地窖與引路蜘蛛"&gt;黑曜石地窖與引路蜘蛛
&lt;/h2&gt;&lt;p&gt;在知識大陸的深處，有一座被稱為「黑曜石地窖」的巨大地下圖書館。這裡不存放紙本書籍，而是漂浮著數以千萬計、散發著微光的「概念石」。每一顆石頭都封印著一段文本或一個想法。&lt;/p&gt;
&lt;p&gt;地窖的規則很奇特：意義越相近的概念石，它們在空間中的距離就越靠近。&lt;/p&gt;
&lt;p&gt;學士們每天都會帶著一顆「未知的石頭」來到地窖，試圖找出地窖中與這顆石頭最相似的幾顆石頭。&lt;/p&gt;
&lt;p&gt;一開始，學士們使用「地毯式搜索」。他們拿著未知的石頭，走到第一顆概念石前比對，再走到第二顆、第三顆……當石頭數量達到千萬級別時，找一顆石頭需要花上大半輩子，許多學士因此累死在地窖中。&lt;/p&gt;
&lt;p&gt;後來，一位聰明的工匠發明了「牽線法」。他用蜘蛛絲把距離相近的石頭綁在一起，形成一個巨大的立體蜘蛛網。&lt;/p&gt;
&lt;p&gt;現在，學士只要隨便挑一顆石頭作為起點，看看它周圍被蜘蛛絲連著的鄰居，挑一個與目標最接近的走過去；然後再看新鄰居，再走過去。就像順藤摸瓜一樣，直到周圍再也沒有更近的石頭為止。&lt;/p&gt;
&lt;p&gt;這個方法快多了！但它有兩個致命缺點：
第一，如果一開始挑的起點離目標太遠，學士要在網子上爬很久很久；
第二，有時候學士會走進一個「死胡同」，周圍的石頭看起來都是最接近的，但真正的完美解答其實藏在網子的另一端，只是這中間沒有蜘蛛絲相連。&lt;/p&gt;
&lt;p&gt;就在地窖即將癱瘓之際，一位盲眼建築師帶來了一群具有魔力的「引路蜘蛛」。盲眼建築師沒有改變最底層的千萬顆石頭，但他讓引路蜘蛛在原始地窖的上方，往上蓋了好幾層「懸空網」。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;最頂層（雲端層）：&lt;/strong&gt; 蜘蛛們只挑選了地窖中極少數（大約萬分之一）的石頭作為「洲際地標」，把它們拉到最頂層，並用極長的蜘蛛絲相連。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中間層（城市層）：&lt;/strong&gt; 往下走一層，蜘蛛挑選了百分之一的石頭作為「城市地標」相連。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最底層（地面層）：&lt;/strong&gt; 維持原本千萬顆石頭全部相連的稠密網路。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;現在，當學士帶著未知石頭來尋找時，尋寶過程變得無比優雅：&lt;/p&gt;
&lt;p&gt;他直接搭乘電梯來到最頂層。這裡只有寥寥幾顆「洲際地標」，他一眼就能看出哪一顆地標離他的目標最近。他跨出巨大的一步，走到那顆地標上。&lt;/p&gt;
&lt;p&gt;接著，他從地標的活板門往下一層跳，來到「城市層」。這裡石頭變多了，但他不需要從頭找，因為他已經降落在正確的洲際區域。他沿著城市層的蜘蛛絲，走幾步找到最接近的城市地標。&lt;/p&gt;
&lt;p&gt;最後，他一路降落到最底層。此時，他已經精準地站在目標石頭的家門口。他只需要在稠密的地面層走上兩三步，就能找到最完美的那顆概念石。&lt;/p&gt;
&lt;p&gt;盲眼建築師的立體蜘蛛網，讓原本需要核對一千萬次的搜尋，變成了只需要在不同樓層輕跳幾十步的完美旅程。&lt;/p&gt;
&lt;h2 id="概念揭曉階層式可導航小世界-hnsw"&gt;概念揭曉：階層式可導航小世界 (HNSW)
&lt;/h2&gt;&lt;p&gt;這個故事所講述的，是現代人工智慧、向量資料庫 (Vector Database) 與大模型檢索增強生成 (RAG) 領域中，極為核心且高效的研究生水平演算法：&lt;strong&gt;階層式可導航小世界 (Hierarchical Navigable Small World, 簡稱 HNSW)&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;當我們在本地端建構龐大的知識庫，並將文本轉化為高維度的向量（例如使用 nomic-embed-text 生成的 Embedding）時，如何在一大堆高維向量中，極速找到與使用者提問最相似的段落，是一個巨大的挑戰。&lt;/p&gt;
&lt;p&gt;傳統的 K-Nearest Neighbors (KNN) 需要計算每一個向量的距離，時間複雜度是 $O(N)$，這在處理百萬級數據時是無法接受的。而 HNSW 透過構建多層次的圖論結構，巧妙地結合了「跳表 (Skip List)」的思想與「小世界網路 (Small World Network)」的特性。&lt;/p&gt;
&lt;p&gt;它讓演算法在搜索初期能夠進行大跨度的「粗略定位」，並在搜索後期進行小範圍的「精細微調」，成功將高維度向量搜索的時間複雜度大幅壓縮至接近 $O(\log N)$。&lt;/p&gt;
&lt;h2 id="故事中的隱喻對應"&gt;故事中的隱喻對應
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;故事中的元素&lt;/th&gt;
&lt;th&gt;演算法與系統概念&lt;/th&gt;
&lt;th&gt;解釋&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;黑曜石地窖與概念石&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;向量資料庫與文本嵌入 (Vector DB &amp;amp; Text Embeddings)&lt;/td&gt;
&lt;td&gt;將知識、文件或筆記轉化為空間中的座標點。意義越相近的文本，在多維空間中的距離越短。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;地毯式搜索&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;暴力搜尋 (Brute-force Search / Exact KNN)&lt;/td&gt;
&lt;td&gt;逐一計算查詢向量與資料庫中所有向量的距離（例如 Cosine Similarity），極度耗時。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;平面的牽線法&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;可導航小世界圖 (Navigable Small World, NSW)&lt;/td&gt;
&lt;td&gt;只在單一平面上將相鄰的節點連起。容易陷入局部最佳解（死胡同），且起點距離目標太遠時效率低。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;懸空網的樓層 (雲端、城市、地面)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;HNSW 的階層圖結構 (Hierarchical Layers)&lt;/td&gt;
&lt;td&gt;HNSW 演算法的核心。第 0 層包含所有節點，越往上層節點數越少，呈現指數級遞減。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;頂層的洲際地標&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;高層的進入點 (Entry Points in Top Layers)&lt;/td&gt;
&lt;td&gt;在最稀疏的圖層中，提供長距離的跨越能力，確保演算法能快速逼近目標所在的全局區域。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;逐層降落並尋找&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;貪婪搜尋與降層 (Greedy Search Routing)&lt;/td&gt;
&lt;td&gt;演算法從最高層開始，在該層找到最近節點後，將該節點作為下一層的起點向下傳遞，直到抵達第 0 層並找到最終的最近鄰 (Nearest Neighbors)。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item></channel></rss>