偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

RAG的Embedding模型選取大有門道

人工智能
為你的 RAG 應(yīng)用選對 embedding 模型不是只挑基準(zhǔn)上最高分的那個。像 MTEB 的工具有幫助,但它們不能告訴你一切。重要是看數(shù)字之外,考慮對你項目真重要的,像語言支持、專業(yè)詞匯、內(nèi)存限,和文本長度。

Retrieval-Augmented Generation (RAG) 現(xiàn)在是最受歡迎的框架,用來構(gòu)建 GenAI 應(yīng)用。企業(yè)和組織特別喜歡它,因為它能讓他們用自己的專有數(shù)據(jù)來回答用戶問題。它讓 LLM 給出準(zhǔn)確、及時、和用戶問題相關(guān)的答案。

從我這幾年構(gòu)建 RAG 應(yīng)用的經(jīng)驗來看,你的響應(yīng)質(zhì)量很大程度上取決于檢索到的上下文。 而提升 RAG 檢索上下文的一個關(guān)鍵方式,就是把數(shù)據(jù)切分成合適的大小,選擇合適的 embedding 模型,還有選一個有效的檢索機(jī)制。

Embeddings 是 LLMs 的骨干。當(dāng)你讓 LLM 幫你調(diào)試代碼時,你的詞和 token 會被轉(zhuǎn)化成高維向量空間,在那里語義關(guān)系變成數(shù)學(xué)關(guān)系,這靠的就是 embedding 模型。如果你用了錯的 embedding 模型,你的 RAG 應(yīng)用可能會拉來不相關(guān)或亂七八糟的數(shù)據(jù)。這會導(dǎo)致糟糕的答案、更高的成本,還有不開心的用戶。

在這篇博客里,我會解釋 embeddings 是什么,為什么它們重要,以及你在選擇時該考慮什么。我們還會看看不同的 embedding 模型,以及哪些適合特定情況。到最后,你會清楚怎么挑對 embedding 模型,來提升準(zhǔn)確性,讓你的 RAG 應(yīng)用跑得順順的。

Embeddings 是什么?

Embeddings 是捕捉語言含義和模式的數(shù)字表示。這些數(shù)字幫你的系統(tǒng)找到和問題或主題緊密相關(guān)的信息。

這些 embeddings 是用 embedding 模型創(chuàng)建的。Embedding 模型把詞、圖像、文檔,甚至聲音,轉(zhuǎn)成一系列叫向量(vector)的數(shù)字。

圖片圖片

你可能是在 large language models 的語境下學(xué)到 embeddings 的,但 embeddings 其實歷史更悠久。

這些 embeddings 是怎么計算的?

現(xiàn)在,大多 embeddings 是用 language models 創(chuàng)建的。 不是用靜態(tài)向量表示每個 token 或詞,language models 創(chuàng)建上下文化的詞 embeddings,根據(jù)上下文用不同的 token 表示詞/句子/塊。這些向量然后可以被其他系統(tǒng)用于各種任務(wù)。

有多種方式產(chǎn)生 text embedding vector。最常見的方式之一,是平均模型產(chǎn)生的所有 token embeddings 的值。但高質(zhì)量的 text embedding 模型通常是專門為 text embedding 任務(wù)訓(xùn)練的。

我們可以用 sentence-transformers 這個流行包,來用預(yù)訓(xùn)練 embedding 模型產(chǎn)生 text embeddings。

from sentence_transformers import SentenceTransformer

# 加載模型
model = SentenceTransformer("sentence-transformers/all-mpnet-base-v2")

# 把文本轉(zhuǎn)成 text embeddings
vector = model.encode("Best movie ever!")

embedding vector 的值數(shù)量,或者說維度,取決于底層的 embedding 模型。可以用 vector.shape 方法找到 embedding vector 的維度。

為什么 Embeddings 在 RAG 中重要?

Embeddings 在 Retrieval-Augmented Generation (RAG) 系統(tǒng)里扮演關(guān)鍵角色。來看看為什么:

語義理解:Embeddings 把詞、句子或文檔轉(zhuǎn)成向量(數(shù)字列表),讓相似含義的靠近在一起。這幫系統(tǒng)理解上下文和含義,不只是匹配確切的詞。

高效檢索:RAG 需要快速找到最相關(guān)的段落或文檔。Embeddings 讓搜索更快更容易,通常用像 k-nearest neighbors (k-NN) 這樣的算法。

更好準(zhǔn)確性:用 embeddings,模型能找出和問題相關(guān)的信息,哪怕沒用一樣的詞。這意味著你得到更準(zhǔn)確、更相關(guān)的答案。

Embeddings 的類型

Embeddings 有幾種形式,取決于你的系統(tǒng)需要處理什么信息。

圖片圖片

1.根據(jù)你想讓系統(tǒng)理解的信息種類:

1.1Word Embeddings

Word embeddings 把每個詞表示成多維空間里的一個點。含義相似的詞,比如 “dog” 和 “cat”,最后會靠近在一起。這幫電腦理解詞之間的關(guān)系,不只是拼寫。

熱門 word embedding 模型包括:

Word2Vec:從大量文本學(xué)習(xí)詞關(guān)系。GloVe:關(guān)注詞一起出現(xiàn)的頻率。FastText:把詞拆成更小部分,讓它更好處理稀有或拼錯的詞。

圖片圖片

1.2Sentence Embeddings

有時,含義只能從整個句子學(xué)到,不是單個詞。Sentence embeddings 把句子的整體含義捕捉成一個向量。

知名 sentence embedding 模型有:

Universal Sentence Encoder (USE):對各種句子都行,包括問題和陳述。SkipThought:學(xué)習(xí)預(yù)測周圍句子,幫模型理解上下文和意圖。

1.3Document Embeddings

文檔可以是從一段到整本書。Document embeddings 把所有文本轉(zhuǎn)成單個向量。這讓搜索大集合文檔更容易,幫找到和查詢相關(guān)的內(nèi)容。

領(lǐng)先 document embedding 模型包括:

Doc2Vec:基于 Word2Vec,但設(shè)計用于更長文本。Paragraph Vectors:類似 Doc2Vec,但專注更短文本部分,比如段落。

1.4Image Embeddings:

文本不是 RAG 系統(tǒng)唯一能處理的,系統(tǒng)還能處理圖像。Image embeddings 把圖片轉(zhuǎn)成描述顏色、形狀和模式的數(shù)字列表。

熱門 image embedding 模型是 Convolutional Neural Networks (CNNs)。它特別擅長識別圖像模式。

2.根據(jù) embedding 的特性:

Embeddings 可以有不同品質(zhì),影響它們怎么工作和最適合什么。咱們用簡單解釋和例子分解這些特性:

2.1Dense Embeddings

Dense embeddings 用向量,幾乎每個數(shù)字都有值。每個值都存一點關(guān)于詞、句子、圖像或文檔的信息。Dense vectors 緊湊高效。在小空間存很多細(xì)節(jié)。這讓電腦更容易比較東西,快速找到相似點。

2.2Sparse Embeddings

Sparse embeddings 和 dense 相反。向量里大多數(shù)數(shù)字是零,只有少數(shù)地方有實際值。零不帶信息。Sparse embeddings 幫突出最重要的特征。它們讓突出什么讓東西獨特或不同更容易。

圖片圖片

2.3Long Context Embeddings

有時,你需要理解整個文檔或長對話,不是短句子。Long context embeddings 設(shè)計用來一次處理大量文本。老模型只能看短文本。如果你給它們大文章,它們得拆成小部分。這可能讓它們錯過重要連接或丟掉主思路。新模型,像 BGE-M3,能一次處理成千上萬詞(高達(dá) 8,192 tokens)。這幫電腦保持完整故事。

2.4Multi-Vector Embeddings

通常,一個項目(像詞或文檔)只得一個向量。Multi-vector embeddings 為每個項目用幾個向量。每個向量能捕捉不同特征或方面。用不止一個向量,電腦能注意到更多細(xì)節(jié)和關(guān)系。這帶來更豐富、更準(zhǔn)確的結(jié)果。

選擇最佳 Text Embedding 模型的參數(shù)

在挑模型前,你該知道看什么。有幾個關(guān)鍵因素要考慮:

圖片圖片

Context Window

Context window 是模型一次能處理的最大文本量。比如,如果模型 context window 是 512 tokens,它一次只能讀 512 個詞或詞片。更長文本必須拆分。有些模型,像 OpenAI 的 text-embedding-ada-002 (8192 tokens) 和 Cohere 的 embedding 模型 (4096 tokens),能處理更長文本。為什么重要?更大 context window 讓你處理更大文檔而不丟信息。這對像搜索長文章、研究論文或報告的任務(wù)有幫助。

Tokenization Unit

Tokenization 是模型把文本拆成更小部分,叫 tokens。不同模型用不同方法:Subword Tokenization (Byte Pair Encoding, BPE):把詞拆成更小片。比如,“unhappiness” 變成 “un” 和 “happiness。” 這幫處理稀有或新詞。WordPiece:類似 BPE,但常用于像 BERT 的模型。Word-Level Tokenization:把文本拆成整詞。不太適合稀有詞。為什么重要?模型 tokenization 的方式影響它怎么理解不同詞,尤其是 unusual 的。大多現(xiàn)代模型用 subword tokenization 來更好靈活。

Dimensionality

Dimensionality 是模型為每塊文本創(chuàng)建的數(shù)字列表(vector)大小。比如,有些模型產(chǎn)生 768 個數(shù)字的向量,其他是 1024 甚至 3072。為什么重要?更高維向量能存更多細(xì)節(jié)信息,但需要更多電腦功率。更低維向量更快,但可能錯過一些細(xì)節(jié)。

Vocabulary Size

這是模型知道的獨特 tokens 數(shù)量。更大詞匯庫處理更多詞和語言,但用更多內(nèi)存。更小詞匯庫更快,但可能不懂稀有或?qū)I(yè)詞。比如:大多現(xiàn)代模型有 30,000 到 50,000 tokens 的詞匯庫。

Training Data

Training data 是模型學(xué)的東西。訓(xùn)練于 General-Purpose:當(dāng)訓(xùn)練于很多類型文本,像網(wǎng)頁或書,模型變得適用于一般用途。適合廣任務(wù)。Domain-Specific:當(dāng)訓(xùn)練于專業(yè)文本,像醫(yī)療或法律文檔,模型變得特定領(lǐng)域?qū)<?。這些適合 niche 任務(wù)。為什么重要?訓(xùn)練于特定數(shù)據(jù)的模型在那些領(lǐng)域做得更好。但可能不適合一般任務(wù)。

Cost

Cost 包括用模型需要的錢和電腦資源。根據(jù)你計劃怎么訪問 LLM 模型,cost 結(jié)構(gòu)會變。API-Based Models:按使用付費,像 OpenAI 或 Cohere。Open-Source Models:免費用,但你需要硬件(像 GPUs)和技術(shù)技能自己跑它們。為什么重要?API 模型容易用,但如果你數(shù)據(jù)多,可能貴。Open-source 模型省錢,但需要更多設(shè)置和知識。

選擇 Embedding 時關(guān)鍵因素

了解你的數(shù)據(jù)領(lǐng)域

從我的經(jīng)驗,當(dāng)設(shè)計 RAG 應(yīng)用時,我第一個問的是,“我的 RAG 系統(tǒng)要處理什么數(shù)據(jù)?”如果我們處理一般知識或客戶 FAQs,一般用途 embeddings 像 OpenAI 的 text-embedding-3-small 通常夠。但對專業(yè)領(lǐng)域像醫(yī)學(xué)、法律或金融,domain-specific 模型如 BioBERT、SciBERT 或 Legal-BERT 是最佳。這些模型訓(xùn)練來理解那些領(lǐng)域的獨特語言和上下文。

如果 RAG 工具需要處理產(chǎn)品圖像或語音查詢,去用 multimodal embeddings。CLIP 是處理文本和圖像的可靠選擇。

Embedding 大小和模型復(fù)雜度

接下來我會評估我的查詢和文檔是短還是長,結(jié)構(gòu)化還是非結(jié)構(gòu)化。有些模型更適合簡短片段,其他擅長處理更長、自由形式文本。

Embedding dimensionality 很重要。高維向量 (1536 或 4096 維度) 捕捉更多細(xì)微差異和上下文。它們一般提升檢索準(zhǔn)確性,但需要更多計算資源和存儲。

低維向量 (384 或 768 維度) 更快更輕,如果你擴(kuò)展到百萬文檔,這很關(guān)鍵。權(quán)衡簡單:更多維度意味更好準(zhǔn)確但更高成本;更少維度意味速度和效率但可能犧牲精度。

實踐中,最好從 384–768 范圍的向量開始。這給你性能和資源用的好平衡。

現(xiàn)代 vector databases 像 Pinecone、Weaviate 或 FAISS 能用 quantization 或 dimensionality reduction 壓縮 embeddings。這些 vector DBs 讓你用更大 embeddings 而不付全內(nèi)存成本。

計算效率

速度關(guān)鍵,尤其是實時應(yīng)用。

如果響應(yīng)時間對你的應(yīng)用超級重要,去用低 inference times 的模型。輕模型像 DistilBERT 或 MiniLM 快,還對大多任務(wù)夠準(zhǔn)確。

上下文理解

接下來,我們該評估 RAG 系統(tǒng)該回答的查詢。知識內(nèi)容/文檔的結(jié)構(gòu)和長度。這些內(nèi)容該基于應(yīng)用切成合適最佳大小。得到用戶問題正確答案的一個關(guān)鍵因素是模型的 context window,就是它一次考慮的文本量。

更大 context windows 在處理長或復(fù)雜文檔時有幫助。能一次處理更多文本的模型傾向于為長查詢給出更準(zhǔn)確答案。

集成和兼容性

最好選和現(xiàn)有基礎(chǔ)設(shè)施無縫集成的模型。來自 TensorFlow、PyTorch 或 Hugging Face 的預(yù)訓(xùn)練模型通常更容易部署,有強(qiáng)文檔和社區(qū)支持。

Cost

最后,要估項目總權(quán)衡訓(xùn)練和部署成本,如果你計劃 fine tune 模型并 host 你的模型。但大多 RAG 應(yīng)用能用現(xiàn)成的好好工作。更大模型訓(xùn)練和跑更貴。Open-source 模型通常更預(yù)算友好,但可能需要額外設(shè)置和維護(hù)。Proprietary 模型提供更好支持和性能,但價格更高。

場景:為醫(yī)療研究論文選擇 Embedding 模型

假設(shè)你需要建一個 semantic search 系統(tǒng),為醫(yī)療研究論文。你想讓用戶快速準(zhǔn)確找到相關(guān)研究。你的數(shù)據(jù)集大,每個文檔長,介于 2,000 到 8,000 詞。你需要一個能處理這些長文本、提供有意義結(jié)果、并保持每月預(yù)算 300$ - 500$ 的模型。

你怎么為這個工作挑對 embedding 模型?咱們一步步走過程。

步驟 1: 專注領(lǐng)域相關(guān)性

醫(yī)療研究論文用復(fù)雜醫(yī)療術(shù)語和技術(shù)語言。你選的模型該訓(xùn)練于科學(xué)或?qū)W術(shù)文本,不是只法律或一般內(nèi)容。所以,主要設(shè)計用于法律或生物醫(yī)學(xué)文檔的模型不會是更廣科學(xué)研究的合適。

步驟 2: 檢查 Context Window 大小

研究論文長。要完整處理它們,你需要大 context window 的模型。大多研究論文有 2,000 到 8,000 詞。大約 2,660 到 10,640 tokens (假設(shè) 1.33 tokens 每詞)。8,192-token context window 的模型能一次蓋約 6,156 詞。如果模型只能處理 512 tokens,它沒法處理整論文。

要跳過的模型:

Stella 400M v5Stella 1.5B v5ModernBERT Embed BaseModernBERT Embed LargeBAAI/bge-base-en-v1.5allenai/specterm3e-base

步驟 3: 考慮 Cost 和 Hosting

你有預(yù)算。按 token 付費會快速加起來,尤其是大文檔和頻繁搜索。來看些模型:

OpenAI text-embedding-3-large: $0.00013 每 1,000 tokensOpenAI text-embedding-3-small: $0.00002 每 1,000 tokensJina Embeddings v3: Open-source 和 self-hosted,無 per-token 成本算算數(shù)。如果你每月處理 10,000 文檔 (每個 8,000 tokens):

OpenAI text-embedding-3-large: $10.4/月 (預(yù)算內(nèi))OpenAI text-embedding-3-small: $1.6/月 (遠(yuǎn)低于預(yù)算)Jina Embeddings v3: 無 per-token 成本。但你付 hosting/server 成本 (取決于服務(wù)器大小和你是否和另一個模型 host)要跳過的模型:

Jina Embeddings v3

步驟 4: 比較性能 (MTEB Score)

現(xiàn)在,看剩下模型的實際性能。Massive Text Embedding Benchmark (MTEB) 提供分?jǐn)?shù)幫比較。

OpenAI text-embedding-3-large: 強(qiáng)性能,好 MTEB 分 (~71.6),能處理高達(dá) 8191 tokens,且成本有效。

OpenAI text-embedding-3-small: 好性能,好 MTEB 分 (~69.42),能處理高達(dá) 8191 tokens,且成本有效。

Voyage-3-large: 好 MTEB 分 (~60.5),能處理高達(dá) 32,000 tokens,且成本有效。NVIDIA NV-Embed-v2: 最高 MTEB 分 (72.31),處理高達(dá) 32,768 tokens,open-source 和 self-hosted。我們的最終選擇:

縮小列表后,你剩下 open-source 模型像 OpenAI text-embedding-3-small、OpenAI text-embedding-3-large、Voyage-3-large 和 NVIDIA NV-Embed-v2。這些模型能處理長醫(yī)療研究論文,提供強(qiáng)準(zhǔn)確性,并適合你的預(yù)算。

NVIDIA NV-Embed-v2 以其高 MTEB 分和大 context window 脫穎而出,讓它成醫(yī)療 semantic search 的可靠選擇。

選擇對 embedding 模型需要仔細(xì)思考??茨愕男枰?,比較選項,挑最適合你項目的那一個。

選擇對 Embeddings 的基準(zhǔn)

新和改進(jìn) embedding 模型一直出來。但你怎么跟蹤它們?幸運,有大規(guī)?;鶞?zhǔn)幫你保持信息。

Massive Text Embedding Benchmark (MTEB)MTEB 是個社區(qū)跑的 leaderboard。它比較超 100 個 text 和 image embedding 模型,跨超 1,000 語言。一切都在一處——評估指標(biāo)、不同任務(wù)類型,和廣泛領(lǐng)域。這讓它成你決定用哪個模型的有用起點。

鏈接:MTEB Dashboard(https://huggingface.co/spaces/mteb/leaderboard)

圖片圖片

Massive Multilingual Text Embedding Benchmark (MMTEB)大多傳統(tǒng)基準(zhǔn)只蓋幾個語言或領(lǐng)域。MMTEB 走得更遠(yuǎn)。它是 MTEB 的擴(kuò)展版,現(xiàn)在包括超 500 個評估任務(wù),超 250 語言。MMTEB 還測試更難挑戰(zhàn),如指令跟隨、從長文檔檢索信息,甚至代碼檢索。它目前是最徹底的多語言 embedding 基準(zhǔn)。

鏈接:研究論文(https://arxiv.org/abs/2502.13595)

什么時候用 Massive Text Embedding Benchmark (MTEB)?怎么用?

MTEB 是挑 embedding 模型的有用工具。不同模型在不同任務(wù)閃光。MTEB leaderboard 顯示每個模型跨廣泛任務(wù)的表現(xiàn)。這能幫你為特定需要縮小選擇。

但,別被 MTEB 分騙了。

MTEB 給你分,但不講全故事。頂模型間差異常很小。這些分來自很多任務(wù),但你看不到任務(wù)間結(jié)果變多少。有時,leaderboard 頂?shù)哪P椭挥休p微優(yōu)勢。統(tǒng)計上,幾頂模型可能表現(xiàn)一樣好。研究者發(fā)現(xiàn)平均分不總意味多,當(dāng)模型這么近。

你該做什么?看模型在類似你用例的任務(wù)表現(xiàn)。這通常比只專注整體分更有幫助。你不用詳細(xì)研究每個數(shù)據(jù)集。但知道用什么文本——像新聞文章、科學(xué)論文或社交媒體帖子——能幫。你能在數(shù)據(jù)集描述或瞥幾例子找到這信息。

MTEB 是有幫助資源,但不完美。批判思考結(jié)果。別只挑最高分模型。深入找最適合你任務(wù)的。

考慮你應(yīng)用的需要。沒有單一模型對一切最好。那是為什么 MTEB 存在,幫你為情況選對。當(dāng)你瀏覽 leaderboard 時,記住這些問題:

你需要什么語言?模型支持嗎?你用專業(yè)詞匯嗎,像金融或法律術(shù)語?模型多大?它能在你硬件跑嗎,像筆記本?你電腦有多少內(nèi)存?模型能 fit 嗎?最大輸入長度是多少?你文本長還是短?一旦你知道什么對你項目最重要,你能在 MTEB leaderboard 上按這些特征過濾模型。這幫你找不只表現(xiàn)好,還適合你實際需要的模型。

結(jié)語

為你的 RAG 應(yīng)用選對 embedding 模型不是只挑基準(zhǔn)上最高分的那個。像 MTEB 的工具有幫助,但它們不能告訴你一切。重要是看數(shù)字之外,考慮對你項目真重要的,像語言支持、專業(yè)詞匯、內(nèi)存限,和文本長度。

花時間理解你用例。基于最相關(guān)任務(wù)比較模型。記住,對一個人應(yīng)用好的模型可能不是你最好的。

最后,周到方法是平衡性能和實際需要。這會幫你找對模型。用點研究和仔細(xì)考慮,你會讓 RAG 應(yīng)用成功。

責(zé)任編輯:武曉燕 來源: PyTorch研習(xí)社
相關(guān)推薦

2017-11-15 10:22:58

數(shù)據(jù)中心網(wǎng)絡(luò)線速

2011-10-07 12:34:23

打印機(jī)常見問題

2025-03-06 08:20:00

RAG嵌入模型

2025-05-09 09:25:00

2025-03-26 11:05:13

2025-03-21 07:00:00

2024-11-21 15:44:21

2024-09-30 05:51:08

2024-10-24 08:07:25

大語言模型LLMRAG模型

2024-06-19 16:11:22

2024-02-05 14:12:37

大模型RAG架構(gòu)

2019-06-18 10:49:41

Python技術(shù)web

2025-10-22 08:39:31

2025-09-09 09:15:12

2025-04-29 09:15:49

AI數(shù)據(jù)模型

2025-01-06 09:43:36

SpringAI?模型

2025-05-20 11:55:22

人工智能Vision RAGLLM

2024-12-04 10:35:21

2024-08-05 10:23:36

點贊
收藏

51CTO技術(shù)棧公眾號