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

如何為你的 RAG 應(yīng)用選擇合適的 Embedding 模型?

發(fā)布于 2025-9-30 06:46
瀏覽
0收藏

Retrieval-Augmented Generation (RAG) 現(xiàn)在是最受歡迎的框架,用來構(gòu)建 GenAI 應(yīng)用。企業(yè)和組織特別喜歡它,因?yàn)樗茏屗麄冇米约旱膶S袛?shù)據(jù)來回答用戶問題。它讓 LLM 給出準(zhǔn)確、及時(shí)、和用戶問題相關(guān)的答案。

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

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

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

Embeddings 是什么?

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

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

如何為你的 RAG 應(yīng)用選擇合適的 Embedding 模型?-AI.x社區(qū)

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

這些 embeddings 是怎么計(jì)算的?

現(xiàn)在,大多 embeddings 是用 language models 創(chuàng)建的。 不是用靜態(tài)向量表示每個(gè) 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 這個(gè)流行包,來用預(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)需要處理什么信息。

如何為你的 RAG 應(yīng)用選擇合適的 Embedding 模型?-AI.x社區(qū)

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

1.1 Word Embeddings

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

熱門 word embedding 模型包括:

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

如何為你的 RAG 應(yīng)用選擇合適的 Embedding 模型?-AI.x社區(qū)

1.2 Sentence Embeddings

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

知名 sentence embedding 模型有:

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

1.3 Document Embeddings

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

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

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

1.4 Image Embeddings:

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

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

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

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

2.1. Dense Embeddings

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

2.2. Sparse Embeddings

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

如何為你的 RAG 應(yīng)用選擇合適的 Embedding 模型?-AI.x社區(qū)

2.3 Long Context Embeddings

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

2.4 Multi-Vector Embeddings

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

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

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

如何為你的 RAG 應(yīng)用選擇合適的 Embedding 模型?-AI.x社區(qū)

  • Context Window
    Context window 是模型一次能處理的最大文本量。比如,如果模型 context window 是 512 tokens,它一次只能讀 512 個(gè)詞或詞片。更長文本必須拆分。有些模型,像 OpenAI 的 text-embedding-ada-002 (8192 tokens) 和 Cohere 的 embedding 模型 (4096 tokens),能處理更長文本。
    為什么重要?
    更大 context window 讓你處理更大文檔而不丟信息。這對像搜索長文章、研究論文或報(bào)告的任務(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 個(gè)數(shù)字的向量,其他是 1024 甚至 3072。
    為什么重要?
    更高維向量能存更多細(xì)節(jié)信息,但需要更多電腦功率。更低維向量更快,但可能錯(cuò)過一些細(xì)節(jié)。
  • Vocabulary Size
    這是模型知道的獨(dú)特 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ù)你計(jì)劃怎么訪問 LLM 模型,cost 結(jié)構(gòu)會(huì)變。
    API-Based Models:按使用付費(fèi),像 OpenAI 或 Cohere。
    Open-Source Models:免費(fèi)用,但你需要硬件(像 GPUs)和技術(shù)技能自己跑它們。
    為什么重要?
    API 模型容易用,但如果你數(shù)據(jù)多,可能貴。Open-source 模型省錢,但需要更多設(shè)置和知識(shí)。

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

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

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

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

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

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

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

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

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

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

3.計(jì)算效率

速度關(guān)鍵,尤其是實(shí)時(shí)應(yīng)用。
如果響應(yīng)時(shí)間對你的應(yīng)用超級(jí)重要,去用低 inference times 的模型。輕模型像 DistilBERT 或 MiniLM 快,還對大多任務(wù)夠準(zhǔn)確。

4.上下文理解

接下來,我們該評估 RAG 系統(tǒng)該回答的查詢。知識(shí)內(nèi)容/文檔的結(jié)構(gòu)和長度。這些內(nèi)容該基于應(yīng)用切成合適最佳大小。得到用戶問題正確答案的一個(gè)關(guān)鍵因素是模型的 context window,就是它一次考慮的文本量。
更大 context windows 在處理長或復(fù)雜文檔時(shí)有幫助。能一次處理更多文本的模型傾向于為長查詢給出更準(zhǔn)確答案。

5.集成和兼容性

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

6.Cost

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

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

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

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

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

醫(yī)療研究論文用復(fù)雜醫(yī)療術(shù)語和技術(shù)語言。你選的模型該訓(xùn)練于科學(xué)或?qū)W術(shù)文本,不是只法律或一般內(nèi)容。
所以,主要設(shè)計(jì)用于法律或生物醫(yī)學(xué)文檔的模型不會(huì)是更廣科學(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 v5
Stella 1.5B v5
ModernBERT Embed Base
ModernBERT Embed Large
BAAI/bge-base-en-v1.5
allenai/specter
m3e-base

步驟 3: 考慮 Cost 和 Hosting

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

OpenAI text-embedding-3-large: $0.00013 每 1,000 tokens
OpenAI text-embedding-3-small: $0.00002 每 1,000 tokens
Jina Embeddings v3: Open-source 和 self-hosted,無 per-token 成本
算算數(shù)。如果你每月處理 10,000 文檔 (每個(gè) 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ù)器大小和你是否和另一個(gè)模型 host)
要跳過的模型:

Jina Embeddings v3

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

現(xiàn)在,看剩下模型的實(shí)際性能。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ì)思考??茨愕男枰容^選項(xiàng),挑最適合你項(xiàng)目的那一個(gè)。

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

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

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

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

如何為你的 RAG 應(yīng)用選擇合適的 Embedding 模型?-AI.x社區(qū)

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

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

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

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

但,別被 MTEB 分騙了。

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

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

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

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

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

結(jié)語:

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

花時(shí)間理解你用例?;谧钕嚓P(guān)任務(wù)比較模型。記住,對一個(gè)人應(yīng)用好的模型可能不是你最好的。

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

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

標(biāo)簽
已于2025-9-30 11:46:06修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦