jollen.org

Jollen 的 Blog
Jollen's email: jollen # jollen.org
more:  Jollen's Training

Text Embedding 的應用:語意對齊(Semantic Alignment)概論

.作者:Jollen/
.日期:Mon Nov 10 2025 08:00:00 GMT+0800 (台北標準時間)


什麼是語意對齊(Semantic Alignment)

在前面的文章中,我們學會了如何以向量表示語言、計算語意距離、並透過語意空間建立語境。 既然提到 Text Embedding,就不能忽略「語意對齊(Semantic Alignment)」的觀念。語意對齊扮演很重要的角色,它是 LLM 的要角,例如:多模態(Multimodal)就需要語意對齊技術。

Text Embedding 並不是「生成(Generator)」的技術,所以它跟生成式 AI 的定位不同,但彼此卻扮演著互相輔助的角度。Text Embedding 是語意的編碼器(Semantic Encoder),如同前文所述,它能計算句子的語意相似度。簡而言之,Text Embededing 的語意對齊句子,能判斷句子中「應該補上什麼樣的詞」。

這種應用稱為語意補漏字(Semantic Fill Suggestion),是 Text Embedding 在非生成式語言任務中的典型應用之一;Vibe Coding 也使用類似的技術,來實作「Auto Completion」功能。

語意補漏字的概念

一般而言,若文章中出現漏字或語句不全的現象,「人類」通常會依靠「語感」與上下文關係來補全。Text Embedding 的語意補漏字原理也有異曲同工之妙;有點像「克漏字(詞)」。

不過,前提到 Text Embedding 不是生成式技術,所以它不會生成新文字,它的克漏字功能,比較像是「選擇題」。以一個簡單的範例來說明,此範例使用 text-embedding-3-small 模型,為句子選擇最佳的補字建議。

假設有一段文字:

「語意搜尋的核心觀念,在於讓語言變成可運算的____。」

這段文字需要編輯補齊,我們可以先準備幾個候選詞,例如:「表達式」、「模型」、「向量」、「結構」等,然後讓 text-embedding-3-small 模型來計算每個詞與原文的語意相似度(分數越高,代表語意越契合)。

// src/examples/semantic-fill-suggestion.js
import OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

// 餘弦相似度函式
function cosineSimilarity(a, b) {
  const dot = a.reduce((s, v, i) => s + v * b[i], 0);
  const norm = Math.sqrt(a.reduce((s, v) => s + v * v, 0)) * Math.sqrt(b.reduce((s, v) => s + v * v, 0));
  return dot / norm;
}

async function main() {
  const sentence = '語意搜尋的核心觀念,在於讓語言變成可運算的____。';
  const candidates = ['表達式', '模型', '向量', '結構', '運算式', '運算子', '數學式'];

  // 建立 Embedding 向量
  const { data } = await client.embeddings.create({
    model: 'text-embedding-3-small',
    input: [sentence, ...candidates]
  });

  const base = data[0].embedding;
  const others = data.slice(1).map(d => d.embedding);

  console.log('\n語意補字建議(相似度由高至低):');
  const ranked = candidates
    .map((word, i) => ({
      word,
      score: cosineSimilarity(base, others[i])
    }))
    .sort((a, b) => b.score - a.score);

  ranked.forEach(r => {
    console.log(`${r.word} → ${r.score.toFixed(3)}`);
  });
}

main();

執行結果:

語意補字建議(相似度由高至低):
運算式 → 0.483
運算子 → 0.445
表達式 → 0.330
數學式 → 0.319
向量 → 0.308
結構 → 0.292
模型 → 0.290

執行結果顯示「運算式」與原句子的相似度最高,所以我們得到「語意搜尋的核心觀念,在於讓語言變成可運算的運算式。」為最佳的完整句子;這就是語意對齊技術的觀念。

換句話說,Text Embedding 根據我們給的句子,找出最能對齊原句的語意。這就是「選擇題」的意思:並非根據上下文來生成新文字,text-embedding-3-small 模型只是純粹依據「語意距離」來找出近似語意。這就是 Semantic Alignment 的基本觀念。


Tags: rag, llm, text-embedding

純手工打造說明:技術專欄文章為 Jollen 原創,內容皆為人工撰寫,無 AI 生成。轉載請註明出處與作者,並全文引用。轉載時請在文章開頭或結尾明顯處註明「本文出處: https://www.jollen.org, 已取得原作者同意並授權使用.」。

Copyright(c) 2001–2025 www.jollen.org. All rights reserved.
Last update: November 10, 2025 at 7:30 PM