詳解)
1. 從“字”到“數(shù)”理解LLM處理文本的第一步當(dāng)我們和ChatGPT、Claude或者任何一個(gè)大語言模型對話時(shí)輸入一段文字它就能理解并生成回復(fù)。這個(gè)看似簡單的過程背后第一步就是將我們熟悉的、由字符組成的文本轉(zhuǎn)換成模型能夠“計(jì)算”的數(shù)學(xué)形式。這個(gè)過程就是分詞與嵌入。你可以把它想象成教一個(gè)只會做數(shù)學(xué)題矩陣運(yùn)算的超級大腦去讀一本小說。我們得先把小說拆成一個(gè)個(gè)有意義的“詞塊”分詞然后給每個(gè)“詞塊”分配一個(gè)獨(dú)一無二的、富含信息的“身份證號碼”嵌入向量這樣大腦才能開始它的工作。為什么這步如此關(guān)鍵因?yàn)槟P偷暮诵摹猅ransformer架構(gòu)——處理的不是字符而是向量。它通過計(jì)算向量之間的“注意力”來理解上下文關(guān)系。如果輸入的“身份證號碼”質(zhì)量不高或者含義模糊模型的理解就會出偏差導(dǎo)致“答非所問”或“胡言亂語”。因此分詞和嵌入的質(zhì)量直接決定了模型“讀懂”輸入的上限。最近大家熱議的RAG、Agent、微調(diào)等技術(shù)其效果好壞很大程度上都依賴于底層文本到向量的轉(zhuǎn)換是否精準(zhǔn)。一個(gè)糟糕的分詞器可能會把專業(yè)術(shù)語切得支離破碎一個(gè)粗糙的嵌入模型可能無法區(qū)分“蘋果”水果和“蘋果”公司。所以無論你是想深入理解LLM原理還是希望優(yōu)化自己的AI應(yīng)用搞懂這一環(huán)都至關(guān)重要。2. 分詞將連續(xù)文本切割成模型的“單詞”分詞英文叫Tokenization其任務(wù)是把一串連續(xù)的字符序列切分成一系列離散的、有語義的基本單元這些單元被稱為Token。對于英文這可能近似于單詞加上標(biāo)點(diǎn)對于中文則復(fù)雜得多因?yàn)橹形臎]有天然的分隔符。2.1 主流分詞算法與策略目前基于Transformer的LLM普遍采用子詞分詞算法它巧妙地平衡了詞匯表大小和語義粒度。其核心思想是高頻詞保留為整體低頻詞或復(fù)雜詞拆分成更小的、可重用的子詞單元。2.1.1 Byte-Pair Encoding從字節(jié)到子詞的構(gòu)建BPE可以說是目前最流行的分詞算法GPT系列、Llama等模型都使用它或其變種。它的工作方式非常直觀像一個(gè)迭代合并的游戲初始化將訓(xùn)練語料中的所有文本拆分成最基本的單元比如UTF-8字節(jié)或字符。例如“hello world”初始化為[‘h’ ‘e’ ‘l’ ‘l’ ‘o’ ‘ ’ ‘w’ ‘o’ ‘r’ ‘l’ ‘d’]。統(tǒng)計(jì)與合并在整個(gè)語料庫中統(tǒng)計(jì)所有相鄰符號對出現(xiàn)的頻率。找到出現(xiàn)頻率最高的一對比如(‘l’ ‘l’)在“hello”中出現(xiàn)了(‘l’ ‘d’)在“world”中出現(xiàn)了。假設(shè)(‘l’ ‘l’)頻率最高就將它們合并成一個(gè)新的符號‘ll’并加入詞匯表。迭代重復(fù)步驟2不斷合并高頻的相鄰符號對直到達(dá)到預(yù)設(shè)的詞匯表大小例如5萬、10萬或合并次數(shù)。這樣做的妙處在于“unhappy”可能會被拆成[‘un’ ‘happy’]其中‘un’和‘happy’都是高頻子詞可以獨(dú)立用于構(gòu)成“unlikely”、“happiness”等詞。這極大地壓縮了詞匯表同時(shí)保持了構(gòu)詞能力。2.1.2 WordPiece與SentencePieceBPE的變體與擴(kuò)展WordPiece被BERT家族模型采用。它與BPE流程類似但合并策略不同。BPE合并最高頻的相鄰對而WordPiece合并能最大程度提升語言模型概率的相鄰對。它計(jì)算的是合并后對整個(gè)語料似然度的增益而不僅僅是頻率。理論上這能產(chǎn)生更“自然”的子詞劃分。SentencePiece這是谷歌推出的一個(gè)開源庫它最大的特點(diǎn)是將文本視為Unicode字符序列無需預(yù)分詞。對于中文、日文等沒有空格的語言這是一個(gè)巨大優(yōu)勢。它直接在原始字符序列上應(yīng)用BPE或Unigram算法避免了因依賴空格分詞而引入的偏差。你可以把它理解為一個(gè)語言無關(guān)的、更純粹的分詞工具。2.1.3 中文分詞的獨(dú)特挑戰(zhàn)與工具英文分詞有空格作為天然界限中文則不然。“南京市長江大橋”就有多種切分可能。傳統(tǒng)的中文NLP任務(wù)依賴分詞工具如Jieba、HanLP、PKUSeg等。這些工具基于詞典匹配、統(tǒng)計(jì)模型如HMM、CRF或深度學(xué)習(xí)能較好地進(jìn)行詞語切分。但在LLM時(shí)代情況發(fā)生了變化。像ChatGLM、Qwen、Baichuan這樣的中文大模型通常直接采用基于字的BPE或SentencePiece。例如它們可能將“人工智能”直接按字拆成[‘人’ ‘工’ ‘智’ ‘能’]作為初始單元然后通過BPE學(xué)習(xí)到[‘人工’ ‘智能’]這樣的高頻組合。這樣做的好處是解決未登錄詞問題任何新字都能被拆成單個(gè)字符處理不會因?yàn)椴辉谠~典而失效。簡化處理流程無需依賴外部分詞工具流程統(tǒng)一。弊端可能會破壞一些固定短語的完整性對成語、專有名詞的理解可能不如詞語級分詞精準(zhǔn)。實(shí)操心得如果你在微調(diào)或部署中文LLM時(shí)遇到生成不連貫或理解偏差不妨檢查一下分詞結(jié)果。用模型的tokenizer對樣例文本進(jìn)行編碼和解碼看看它到底把句子切成了什么樣。有時(shí)在專業(yè)領(lǐng)域如醫(yī)學(xué)、法律加入一些領(lǐng)域?qū)S忻~作為特殊Token能顯著提升模型在該領(lǐng)域的表現(xiàn)。2.2 分詞器的實(shí)際影響與調(diào)優(yōu)分詞不是一個(gè)透明的過程它直接影響模型性能和用戶體驗(yàn)。上下文長度限制模型的上下文窗口如4K、8K、128K限制的是Token的數(shù)量而非字符數(shù)。一個(gè)中文字符可能被編碼成1個(gè)或更多Token取決于分詞器。因此一段1000字的中文文本占用的Token數(shù)可能遠(yuǎn)超1000更容易觸達(dá)窗口上限。計(jì)算Token數(shù)量必須使用模型配套的分詞器而不是簡單地按字計(jì)數(shù)。生成效率與成本模型生成文本時(shí)是以Token為單位進(jìn)行自回歸預(yù)測的。分詞粒度越細(xì)生成相同字符內(nèi)容所需的預(yù)測步驟可能越多影響速度。同時(shí)許多API服務(wù)按Token數(shù)計(jì)費(fèi)低效的分詞會直接增加成本。信息損失過于激進(jìn)的分詞可能會破壞語義單元。例如將“U.S.A”切成[‘U’ ‘.’ ‘S’ ‘.’ ‘A’]就丟失了其作為國家名稱的整體性。如何應(yīng)對理解你的分詞器使用transformers庫你可以輕松加載并測試任何Hugging Face模型的分詞器。from transformers import AutoTokenizer tokenizer AutoTokenizer.from_pretrained(meta-llama/Llama-3.2-1B-Instruct) text 大語言模型很有趣。 tokens tokenizer.tokenize(text) # 查看分詞結(jié)果 input_ids tokenizer.encode(text) # 查看對應(yīng)的ID print(tokens) # 例如[大, 語言, 模型, 很, 有趣, 。] print(len(input_ids)) # 實(shí)際的Token數(shù)量處理長文本當(dāng)文本超過上下文窗口時(shí)需要進(jìn)行截?cái)嗷蚧瑒哟翱谔幚?。關(guān)鍵是確保截?cái)帱c(diǎn)不在一個(gè)完整語義單元的中間這需要根據(jù)分詞結(jié)果進(jìn)行判斷有時(shí)甚至需要回退到字符級別尋找合適的斷點(diǎn)如句號、換行符。特殊Token處理分詞器除了詞匯表還定義了一系列特殊Token如[CLS],[SEP],[PAD],[UNK],|endoftext|等。在構(gòu)建輸入時(shí)如問答對、多輪對話必須正確使用這些Token來分隔不同部分模型才能理解結(jié)構(gòu)。3. 嵌入為每個(gè)Token賦予“靈魂”的向量表示分詞得到了Token序列和對應(yīng)的ID如[2301, 3928, 1827, ...]。但這些ID只是索引是離散的、孤立的。嵌入層的作用就是將這些離散的ID映射到連續(xù)的、高維的向量空間中。這個(gè)向量就是該Token的嵌入。你可以把整個(gè)詞匯表想象成一個(gè)巨大的抽屜柜每個(gè)抽屜對應(yīng)一個(gè)Token ID里放著一個(gè)獨(dú)一無二的、高維的“屬性向量”。這個(gè)向量不是隨機(jī)的而是在訓(xùn)練過程中根據(jù)該Token在數(shù)十億文本中出現(xiàn)的上下文學(xué)習(xí)到的語義和語法特征的密集表示。3.1 嵌入層的原理與訓(xùn)練在Transformer模型中嵌入層通常是一個(gè)可訓(xùn)練的查找表其維度為[詞匯表大小V, 隱藏維度D]。例如詞匯表有5萬個(gè)Token隱藏維度是4096那么這個(gè)嵌入矩陣就是一個(gè)50000 x 4096的龐大參數(shù)矩陣。前向過程當(dāng)輸入ID為2301時(shí)模型就從這個(gè)矩陣中取出第2301行一個(gè)4096維的向量作為該Token的初始表示。訓(xùn)練過程這個(gè)矩陣的數(shù)值是如何來的它是與模型的其他部分注意力層、前饋網(wǎng)絡(luò)一起訓(xùn)練得到的。訓(xùn)練目標(biāo)是讓模型能夠根據(jù)上下文預(yù)測下一個(gè)Token或完形填空。在這個(gè)過程中模型會不斷調(diào)整每個(gè)Token的向量使得語義相似的Token如“貓”和“狗”在向量空間中的位置接近。有語法關(guān)聯(lián)的Token如“吃”和“食物”也能產(chǎn)生關(guān)聯(lián)。同一個(gè)詞的不同形態(tài)如“run”, “running”, “ran”的向量也彼此相關(guān)。最終這個(gè)高維空間形成了一個(gè)復(fù)雜的“語義地圖”模型所有的“理解”都基于在這個(gè)地圖上的計(jì)算。3.2 位置編碼為序列注入順序信息原始的嵌入向量只包含了Token的語義信息但丟失了它在句子中的位置信息?!柏堊防鲜蟆焙汀袄鲜笞坟垺钡腡oken集合一樣但含義相反。因此必須向模型注入順序信息。這就是位置編碼的職責(zé)。3.2.1 絕對位置編碼最經(jīng)典的是Transformer論文中提出的正弦余弦位置編碼。它為序列中的每個(gè)位置pos生成一個(gè)與嵌入維度d_model相同的向量。這個(gè)向量的每個(gè)元素都是由不同頻率的正弦和余弦函數(shù)計(jì)算得出的PE(pos, 2i) sin(pos / 10000^(2i/d_model))PE(pos, 2i1) cos(pos / 10000^(2i/d_model))其中i是維度索引。這種編碼的特點(diǎn)是對于固定的偏移量kPE(posk)可以表示為PE(pos)的線性函數(shù)這有助于模型學(xué)習(xí)相對位置關(guān)系。然后將這個(gè)位置編碼向量直接加到對應(yīng)的Token嵌入向量上。3.2.2 相對位置編碼與旋轉(zhuǎn)位置編碼絕對位置編碼在長文本上可能泛化性不佳。后續(xù)的研究提出了更優(yōu)的方案相對位置編碼不關(guān)注Token的絕對位置而是關(guān)注Token對之間的相對距離。在計(jì)算注意力分?jǐn)?shù)時(shí)加入一個(gè)與相對距離相關(guān)的偏置項(xiàng)。這更符合語言的理解邏輯我們更關(guān)心詞與詞之間的關(guān)系而非它們離句子開頭有多遠(yuǎn)。旋轉(zhuǎn)位置編碼這是當(dāng)前許多先進(jìn)模型如Llama、GPT-NeoX采用的方法。它不進(jìn)行向量相加而是通過旋轉(zhuǎn)矩陣對Query和Key向量進(jìn)行變換。具體來說將嵌入向量的每兩個(gè)維度看作一個(gè)復(fù)數(shù)根據(jù)位置信息對這個(gè)復(fù)數(shù)進(jìn)行旋轉(zhuǎn)。RoPE具有很好的外推性即訓(xùn)練在較短序列上推理時(shí)能一定程度上處理更長的序列這對擴(kuò)展上下文窗口至關(guān)重要。注意事項(xiàng)當(dāng)你嘗試對模型進(jìn)行長度外推即讓訓(xùn)練時(shí)只見過2048個(gè)Token的模型處理4096個(gè)Token的文本時(shí)位置編碼往往是最大的瓶頸。正弦編碼或可學(xué)習(xí)的位置嵌入通常外推能力很差會導(dǎo)致超出訓(xùn)練長度的位置信息混亂。RoPE在這方面表現(xiàn)更好但也有其極限。這就是為什么“無損擴(kuò)展上下文窗口”成為當(dāng)前一個(gè)重要的研究方向。3.3 嵌入向量的性質(zhì)與可視化訓(xùn)練好的嵌入空間具有一些有趣的數(shù)學(xué)性質(zhì)類比關(guān)系經(jīng)典的例子是vec(“國王”) - vec(“男人”) vec(“女人”) ≈ vec(“女王”)。這表示語義關(guān)系可以通過向量運(yùn)算來捕捉。語義聚類相似主題的詞會聚集在一起。所有關(guān)于“水果”的詞向量在空間中會形成一個(gè)簇與“交通工具”的簇分開。我們可以通過降維技術(shù)如t-SNE、PCA將高維向量投影到2D或3D進(jìn)行可視化直觀地觀察這些性質(zhì)。這不僅是理解模型內(nèi)部表示的好方法也能用于診斷問題比如檢查某個(gè)領(lǐng)域的術(shù)語是否被正確編碼。4. 從分詞嵌入到實(shí)際應(yīng)用場景理解了基本原理我們來看看這些技術(shù)如何在具體場景中發(fā)揮作用以及可能遇到的“坑”。4.1 在RAG中的核心作用檢索的基石檢索增強(qiáng)生成是當(dāng)前讓LLM獲取最新、特定知識的主流架構(gòu)。其核心步驟是將文檔庫分塊 - 將文本塊轉(zhuǎn)換為向量 - 存儲到向量數(shù)據(jù)庫 - 用查詢向量檢索相關(guān)塊 - 交給LLM生成答案。這里嵌入模型的質(zhì)量直接決定了檢索的精度。如果你用一個(gè)通用的、在維基百科上訓(xùn)練的嵌入模型去處理充滿專業(yè)術(shù)語的醫(yī)學(xué)論文或法律條款檢索效果很可能不理想。因?yàn)椤靶募」K馈焙汀靶墓!痹谕ㄓ媚P椭械南蛄靠赡懿唤咏卺t(yī)學(xué)場景下它們應(yīng)該非常接近。解決方案領(lǐng)域微調(diào)嵌入模型使用你所在領(lǐng)域的文本數(shù)據(jù)對開源的嵌入模型如BGE、text2vec進(jìn)行微調(diào)。這能讓模型學(xué)習(xí)到領(lǐng)域特有的語義相似度。精心設(shè)計(jì)分塊策略分塊大小chunk size和重疊量overlap對檢索效果影響巨大。塊太大可能包含無關(guān)信息稀釋核心內(nèi)容塊太小可能破壞完整語義。對于技術(shù)文檔按章節(jié)或子章節(jié)分塊可能比固定長度分塊更好。重疊則可以避免在塊邊界丟失關(guān)鍵信息?;旌蠙z索除了向量檢索語義搜索可以結(jié)合關(guān)鍵詞檢索BM25或元數(shù)據(jù)過濾日期、作者。這就是所謂的“混合搜索”能兼顧語義匹配和精確匹配提高召回率。4.2 在微調(diào)與提示工程中的隱式影響當(dāng)你進(jìn)行指令微調(diào)或使用提示詞時(shí)分詞和嵌入在暗中施加影響。微調(diào)全參數(shù)微調(diào)會更新嵌入層的參數(shù)。這意味著模型會為你在訓(xùn)練數(shù)據(jù)中頻繁使用的特定術(shù)語或表達(dá)方式調(diào)整其向量表示使其更貼合你的領(lǐng)域。提示工程模型的輸出對提示詞的措辭非常敏感。這背后的一部分原因就是不同的措辭會導(dǎo)致完全不同的分詞和嵌入序列?!罢埧偨Y(jié)下文”和“煩請您對下面的文章進(jìn)行要點(diǎn)歸納”這兩個(gè)提示雖然人類看來意思一樣但它們的Token序列和初始向量表示差異很大可能導(dǎo)致模型激活不同的內(nèi)部路徑從而產(chǎn)生不同的輸出風(fēng)格甚至內(nèi)容。一個(gè)常見的坑是“系統(tǒng)提示詞被忽略”。有些模型在訓(xùn)練時(shí)系統(tǒng)提示和用戶提示是被區(qū)別對待的例如用特殊Token分隔。如果你在部署時(shí)沒有正確格式化輸入導(dǎo)致系統(tǒng)提示被分詞后與用戶消息混在一起模型可能就無法正確識別指令。務(wù)必查閱模型文檔嚴(yán)格按照要求的格式如ChatML格式、Llama2對話格式構(gòu)建輸入。4.3 處理多語言與特殊格式的挑戰(zhàn)現(xiàn)代LLM通常是多語言的這給分詞器帶來了巨大挑戰(zhàn)。詞匯表膨脹為了覆蓋多種語言詞匯表需要包含各種語言的字符和子詞導(dǎo)致詞匯表異常龐大增加了嵌入層的參數(shù)量和計(jì)算開銷。不平衡表示訓(xùn)練數(shù)據(jù)中英語占主導(dǎo)導(dǎo)致英語Token的嵌入表示學(xué)習(xí)得最充分其他語言的Token可能表示質(zhì)量較差這就是為什么有些模型在非英語任務(wù)上表現(xiàn)會下降。特殊格式代碼、數(shù)學(xué)公式、化學(xué)式等具有嚴(yán)格的語法結(jié)構(gòu)。通用的分詞器處理這些內(nèi)容時(shí)可能會產(chǎn)生無意義的切分。例如一個(gè)Python函數(shù)名calculate_loss被切成[‘calculate’ ‘_’ ‘lo’ ‘ss’]破壞了其作為一個(gè)標(biāo)識符的整體性。針對代碼的模型如CodeLlama會使用在代碼庫上訓(xùn)練的分詞器以更好地保留編程語言的語義單元。應(yīng)對策略對于特定領(lǐng)域應(yīng)用如果可能優(yōu)先選擇在該領(lǐng)域或語言上有優(yōu)勢的模型和分詞器。例如處理中文任務(wù)Qwen或ChatGLM通常比同等規(guī)模的通用英文模型更合適。5. 進(jìn)階話題嵌入模型與向量數(shù)據(jù)庫的協(xié)同雖然LLM內(nèi)部的嵌入層是隨模型一起訓(xùn)練的但在RAG等外部檢索場景中我們通常使用一個(gè)獨(dú)立的、專門訓(xùn)練用于生成“檢索友好”向量的嵌入模型。這與LLM內(nèi)部的嵌入層目標(biāo)不同前者旨在讓語義相似的文本片段具有相似的向量用于檢索后者旨在為下一個(gè)Token預(yù)測任務(wù)提供最佳上下文表示。5.1 專用嵌入模型的選擇目前社區(qū)有很多優(yōu)秀的開源嵌入模型如BGE系列智源研究院推出中文表現(xiàn)強(qiáng)勁有不同尺寸版本。text2vec朗朗上口的名字中文語義相似度計(jì)算效果很好。E5系列微軟發(fā)布通過指令微調(diào)指令如“為這段文本生成用于檢索的向量”在檢索任務(wù)上表現(xiàn)優(yōu)異。OpenAI的text-embedding-ada-002雖然非開源但作為API服務(wù)效果穩(wěn)定是多語言任務(wù)的常見選擇。選擇時(shí)需要考慮維度通常有384維、768維、1024維等。維度越高表征能力越強(qiáng)但計(jì)算和存儲開銷也越大。對于千萬級以下的文檔庫768維通常是個(gè)不錯(cuò)的平衡點(diǎn)。上下文長度嵌入模型本身也有上下文窗口限制如512、1024、2048。如果你的文本塊很長需要選擇支持長上下文的模型或者采用動態(tài)截?cái)?、分段編碼再池化的策略。微調(diào)與領(lǐng)域適配正如前文所述在特定領(lǐng)域數(shù)據(jù)上微調(diào)嵌入模型是提升檢索效果最有效的手段之一。5.2 向量數(shù)據(jù)庫的集成與優(yōu)化將文本轉(zhuǎn)換為向量后需要存入向量數(shù)據(jù)庫進(jìn)行高效檢索。Milvus、Pinecone、Qdrant、Weaviate等都是熱門選擇。集成時(shí)的關(guān)鍵點(diǎn)索引類型向量數(shù)據(jù)庫使用近似最近鄰搜索算法來加速檢索。常見的索引有HNSW、IVF-Flat、SCANN等。HNSW分層可導(dǎo)航小世界在精度和速度的平衡上表現(xiàn)很好是默認(rèn)的推薦選擇。IVF倒排文件需要訓(xùn)練更適合分布相對穩(wěn)定的海量數(shù)據(jù)集。距離度量向量之間的相似度如何計(jì)算最常用的是余弦相似度它只關(guān)注向量的方向而非長度非常適合嵌入向量。此外還有內(nèi)積、歐氏距離等。必須確保嵌入模型訓(xùn)練時(shí)使用的度量方式與向量數(shù)據(jù)庫檢索時(shí)使用的度量方式一致否則結(jié)果毫無意義。元數(shù)據(jù)過濾這是生產(chǎn)級應(yīng)用必須考慮的功能。除了向量相似度我們經(jīng)常需要結(jié)合業(yè)務(wù)邏輯進(jìn)行過濾例如“只檢索2023年之后的文檔”、“只檢索A部門的報(bào)告”。優(yōu)秀的向量數(shù)據(jù)庫應(yīng)支持在檢索時(shí)高效地結(jié)合元數(shù)據(jù)過濾。性能調(diào)優(yōu)對于億級向量索引構(gòu)建參數(shù)如HNSW的M和efConstruction、搜索參數(shù)ef對性能和精度影響巨大。需要在你的數(shù)據(jù)集上進(jìn)行基準(zhǔn)測試找到最佳參數(shù)。一個(gè)實(shí)戰(zhàn)中的教訓(xùn)我曾遇到一個(gè)案例檢索結(jié)果總是包含一些看似相關(guān)但實(shí)際過時(shí)的文檔。檢查后發(fā)現(xiàn)問題出在分塊時(shí)沒有把文檔的“更新時(shí)間”這個(gè)元數(shù)據(jù)正確地繼承到向量塊上導(dǎo)致無法用時(shí)間進(jìn)行過濾。最終我們修改了預(yù)處理流水線確保每個(gè)文本塊都攜帶了來源文檔的完整元數(shù)據(jù)問題才得以解決。從用戶輸入的一段文字到模型內(nèi)部可以進(jìn)行矩陣運(yùn)算的向量序列分詞與嵌入完成了這個(gè)關(guān)鍵的“翻譯”工作。它不僅是技術(shù)實(shí)現(xiàn)的起點(diǎn)更是影響模型最終表現(xiàn)的質(zhì)量基石。無論是為了更深入地理解LLM的“黑盒”還是為了構(gòu)建更高效的RAG系統(tǒng)、進(jìn)行更成功的模型微調(diào)投入時(shí)間理解并優(yōu)化這一環(huán)節(jié)都將帶來豐厚的回報(bào)。在實(shí)際操作中多動手實(shí)驗(yàn)用不同的分詞器處理你的文本觀察結(jié)果用不同的嵌入模型為同一句話生成向量計(jì)算它們的相似度在向量數(shù)據(jù)庫中嘗試不同的索引參數(shù)。這些實(shí)踐經(jīng)驗(yàn)遠(yuǎn)比單純閱讀理論更能讓你把握其中的精妙之處。