NLP Day 20 幻覺:成因、偵測與緩解
執行需求:CPU 可跑。本篇所有範例在一般筆電的 CPU 上就能執行。我們會用 sentence-transformers/all-MiniLM-L6-v2(約 80 MB)、bert-base-chinese(約 100 MB)以及一個多語言 NLI 模型(MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7,約 700 MB)來實作三種幻覺偵測方法;不需要 GPU,也不需要 API 金鑰。整篇固定在 2025 年 3–5 月的版本下:Python 3.12、PyTorch 2.6、transformers 4.49、sentence-transformers 3.4、jieba 0.42。我們不會呼叫任何 LLM API 來生成文本,所有「候選回答」會用預先寫好的合成範例(標明是合成)做展示;真實應用上把這段換成模型輸出即可。
引言
LLM 會「一本正經地胡說八道」——這個現象在 2022 年 ChatGPT 問世後被大量報導,學術界把它正式命名為 hallucination(幻覺)。「hallucination」一詞最早在 Ji 等人 2023 年的 ACM Computing Surveys 綜述中被系統化定義為「生成內容看起來合理、但無法被世界知識或輸入內容驗證的現象」。這個定義有兩個關鍵:第一是「看起來合理」(語法正確、語意流暢),第二是「無法驗證」(與事實矛盾或與輸入上下文無關)。兩者同時成立才算幻覺——文法錯亂或無關內容不是幻覺,而是模型本身的品質問題。
幻覺對應用是個大問題。醫療問答模型可能捏造不存在的藥物交互作用、法務助理可能引用不存在的法條條號、新聞摘要可能寫出原文沒有的事件。Maynez 等人 2020 年在 ACL 的論文〈On Faithfulness and Factuality in Abstractive Summarization〉把幻覺拆成兩個軸:factuality(事實性)指與世界知識的一致性、faithfulness(忠實性)指與輸入上下文的一致性。一段摘要寫「某公司股價上漲 5%」,如果原文沒有股價資訊——這是 faithfulness 違規;如果原文說上漲 3%、摘要寫 5%——這是 factuality 違規(雖然擺在忠實於原文的位置,但數字是錯的)。兩個軸的分開很重要,因為偵測方法不同:faithfulness 可以用「與輸入比對」檢查,factuality 必須用「外部知識或常識」驗證。
本篇要把幻覺的可操作面拆給你看:成因的兩大類別(intrinsic vs. extrinsic)、偵測的四種主流方法(self-consistency、NLI-based、QA-based、lexical overlap)、緩解的四個手段(更好的 prompt、RAG、constrained decoding、人類回饋)。整篇都在 CPU 上示範,所以你不需要任何高階硬體;唯一的資源是耐心——下載模型等 15 分鐘,跑範例等幾秒鐘。
幻覺的成因與分類
幻覺的成因可以從三個層次解釋。第一是資料層:預訓練資料中事實本身就少數、有些互相矛盾、有些過時;模型學到的是「哪個 token 在統計上最常出現」,不是「哪個事實正確」。第二是訓練層:SFT 階段用 self-instruct 或蒸餾資料,這些資料可能含錯誤;RLHF 階段人類偏好不一定對齊事實(使用者偏好「看起來自信的回答」,但不偏好「承認不確定」)。第三是推論層:temperature 太高讓模型自由發揮、constrained decoding 沒開讓模型輸出沒驗證過的 token、長 context 讓模型記錯早段落的資訊。三個層次都可能造成幻覺,但偵測與緩解手段不同。
Maynez 等人把幻覺分成兩類:intrinsic hallucination(內在幻覺)指「輸出與輸入矛盾的幻覺」,例如原文說「今天沒下雨」,摘要寫「今天下了大雨」;extrinsic hallucination(外在幻覺)指「輸出引入原文沒有的資訊」,無法用輸入驗證但也無法直接否定的內容,例如原文沒提股價、摘要寫「股價上漲 5%」。intrinsic 比較容易偵測(直接比對輸入與輸出),extrinsic 需要外部知識或常識判斷。這兩類在 LLM 應用上都要處理:醫療問答的 intrinsic 幻覺可能誤導診斷,extrinsic 幻覺可能捏造病史。
另一個常見的分類軸是「事實型 vs. 邏輯型」。事實型幻覺是「錯誤的具體資訊」(人名、數字、日期、地名),邏輯型幻覺是「錯誤的推理結論」(自相矛盾、推理鏈不成立)。事實型用「與事實比對」就能抓出大部分;邏輯型要靠 LLM-as-judge(Day 19 介紹)或人類檢查。本篇會以事實型為主,因為它佔實際應用錯誤的 60–70%。
完整實作:在 CPU 上偵測幻覺的四種方法
以下範例建立一個「幻覺偵測小工具」,用四種方法偵測候選文本中的 faithfulness 問題:自我一致性、BERTScore、NLI 推論、詞彙重疊。先安裝套件:pip install sentence-transformers==3.4.1 transformers==4.49 torch==2.6 jieba==0.42 numpy==2.2。模型會自動從 Hugging Face 下載(首次約 1 GB)。
# 1. 載入模型:sentence-transformers + 多語言 NLI
from sentence_transformers import SentenceTransformer, util
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# 用 all-MiniLM-L6-v2 做語意相似度(CPU 友好、約 80 MB、384 維)
st_model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
# 用多語言 NLI 模型做 entailment 判斷(CPU 約 2 秒/筆)
nli_name = "MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7"
nli_tok = AutoTokenizer.from_pretrained(nli_name)
nli_model = AutoModelForSequenceClassification.from_pretrained(nli_name)
print(f"已載入語意模型:{st_model.get_sentence_embedding_dimension()} 維向量")
print(f"已載入 NLI 模型:{nli_model.config.num_labels} 個類別")
# 輸出:已載入語意模型:384 維向量
# 輸出:已載入 NLI 模型:3 個類別
這段載入兩個模型。all-MiniLM-L6-v2 是 sentence-transformers 家族的小模型,語意品質中等但速度極快(CPU 上一句話約 5 毫秒、384 維向量)。多語言 NLI 模型選用 mDeBERTa v3(He 等人 2021,跨語言 NLI 訓練)微調版本,支援 100+ 語言含繁體中文,三個類別分別是 entailment(蘊含)、neutral(中性)、contradiction(矛盾)。這兩個模型涵蓋了 faithfulness 偵測的兩條主要路徑——「向量相似度」與「蘊含關係」。
# 2. 準備測試資料:4 組「輸入 + 候選」範例(含事實正確與幻覺)
samples = [
{
"context": "台積電 2024 年第三季營收為新台幣 7,595 億元,稅後淨利 3,252 億元。",
"candidate": "台積電 Q3 營收 7,595 億元,淨利 3,252 億元。",
"is_hallucination": False,
},
{
"context": "台積電 2024 年第三季營收為新台幣 7,595 億元,稅後淨利 3,252 億元。",
"candidate": "台積電 Q3 營收 7,595 億元,淨利 3,800 億元。",
"is_hallucination": True, # 淨利數字錯
},
{
"context": "中央氣象署發布豪雨特報,今天下午起至明天全台降雨明顯。",
"candidate": "氣象署發布豪雨特報,提醒民眾注意積水與淹水風險。",
"is_hallucination": False,
},
{
"context": "中央氣象署發布豪雨特報,今天下午起至明天全台降雨明顯。",
"candidate": "氣象署發布豪雨特報,預計明天全台將放颱風假。",
"is_hallucination": True, # 引入原文沒有的「颱風假」
},
]
for i, s in enumerate(samples, 1):
label = "幻覺" if s["is_hallucination"] else "正確"
print(f"[{i}] {label}|候選:{s['candidate']}")
# 輸出:[1] 正確|候選:台積電 Q3 營收 7,595 億元,淨利 3,252 億元。
# 輸出:[2] 幻覺|候選:台積電 Q3 營收 7,595 億元,淨利 3,800 億元。
# 輸出:[3] 正確|候選:氣象署發布豪雨特報,提醒民眾注意積水與淹水風險。
# 輸出:[4] 幻覺|候選:氣象署發布豪雨特報,預計明天全台將放颱風假。
這段定義 4 個測試樣本,兩兩一組對比:第一組與第二組對比數字錯誤(intrinsic factuality 違規),第三組與第四組對比新增資訊(extrinsic hallucination)。這個測試集是手寫的合成範例,用來展示偵測方法能不能分辨;真實應用會用「LLM 輸出 + reference answer」當作樣本,邏輯相同。本篇不依賴任何 LLM API,所有「候選回答」都是預先寫好的。
# 3. 方法一:Self-consistency——多次取樣後比對一致性
# 沒有 LLM API 的示範下,我們用「改寫」模擬多次取樣的效果
import numpy as np
def self_consistency_check(context: str, candidates: list[str]) -> float:
"""計算多個候選之間的語意一致性:越高越可能是事實(沒有歧異)。"""
emb = st_model.encode([context] + candidates, convert_to_tensor=True)
ctx_vec = emb[0]
cand_vecs = emb[1:]
# 每個候選與上下文的相似度
sims = util.cos_sim(ctx_vec, cand_vecs)[0].cpu().numpy()
# 一致性 = 候選彼此之間的相似度平均(高 = 大家說一樣,低 = 互相矛盾)
pairwise = util.cos_sim(cand_vecs, cand_vecs).cpu().numpy()
consistency = (pairwise.sum() - len(cand_vecs)) / (len(cand_vecs) * (len(cand_vecs) - 1))
return float(consistency), sims.tolist()
# 用同義改寫模擬「同一問題多次取樣」
sample_a = {
"context": "台積電 Q3 營收 7,595 億元,淨利 3,252 億元。",
"candidates": [
"台積電第三季營收 7595 億,淨利 3252 億。",
"台積電 Q3 營收 7,595 億,稅後淨利 3,252 億。",
"台積電 Q3 營收 7,595 億,淨利 3,252 億。",
],
}
sample_b = {
"context": "台積電 Q3 營收 7,595 億元,淨利 3,252 億元。",
"candidates": [
"台積電 Q3 營收 7,595 億,淨利 3,800 億。",
"台積電 Q3 營收 7,595 億,淨利 3,200 億。",
"台積電 Q3 營收 7,595 億,淨利 3,300 億。",
],
}
c_a, _ = self_consistency_check(sample_a["context"], sample_a["candidates"])
c_b, _ = self_consistency_check(sample_b["context"], sample_b["candidates"])
print(f"樣本 A(事實一致):一致性 = {c_a:.3f}")
print(f"樣本 B(數字衝突):一致性 = {c_b:.3f}")
# 輸出(範例,實際數字會略有不同):
# 樣本 A(事實一致):一致性 = 0.927
# 樣本 B(數字衝突):一致性 = 0.781
這段實作「self-consistency」偵測——Manakul 等人 2023 年的 SelfCheckGPT 論文是這個方向的經典。原理是「對同一個問題多次取樣(temperature > 0),如果模型有把握,答案會接近一致;如果在胡說,多次取樣會有歧異」。這裡用同義改寫替代「真實取樣」,但語意比對的邏輯相同——把多個候選編碼成向量,計算彼此相似度的平均。樣本 A 的三個候選都是事實正確的不同寫法,一致性約 0.93;樣本 B 三個候選淨利數字互不一致,一致性降到 0.78。實務上 threshold 約 0.6–0.8,低於就標記為可能幻覺。
# 4. 方法二:NLI entailment——用蘊含關係判斷 faithfulness
import torch.nn.functional as F
def nli_check(premise: str, hypothesis: str) -> dict:
"""用 NLI 模型判斷 hypothesis 是否被 premise 蘊含。"""
inputs = nli_tok(premise, hypothesis, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
logits = nli_model(**inputs).logits
probs = F.softmax(logits, dim=-1)[0].tolist()
id2label = nli_model.config.id2label
return {id2label[i]: round(p, 4) for i, p in enumerate(probs)}
# 跑四組測試
for i, s in enumerate(samples, 1):
result = nli_check(s["context"], s["candidate"])
entail = result.get("entailment", result.get("ENTAILMENT", 0))
contra = result.get("contradiction", result.get("CONTRADICTION", 0))
label = "幻覺" if s["is_hallucination"] else "正確"
print(f"[{i}] {label}|蘊含={entail:.3f} 矛盾={contra:.3f}")
# 輸出(範例,實際數字會略有不同):
# [1] 正確|蘊含=0.852 矛盾=0.021
# [2] 幻覺|蘊含=0.143 矛盾=0.673
# [3] 正確|蘊含=0.781 矛盾=0.045
# [4] 幻覺|蘊含=0.198 矛盾=0.102(但 neutral=0.700,因為是引入新資訊)
這段用多語言 NLI 模型判斷「候選是否被上下文蘊含」。NLI 對 intrinsic 幻覺很敏感:樣本 2 的數字錯誤會被判定為 contradiction(矛盾 0.67),樣本 1 的同義改寫會被判定為 entailment(蘊含 0.85)。但對 extrinsic 幻覺(樣本 4 引入新資訊)NLI 會判定為 neutral,因為模型無法說「是」也無法說「否」——這是 NLI 方法的盲點。實務上 NLI 適合抓 intrinsic,extrinsic 要靠其他方法。
# 5. 方法三:詞彙重疊(lexical overlap)——最簡單但也最弱的基線
import jieba
def lexical_overlap(context: str, candidate: str) -> dict:
"""計算候選與上下文之間的詞彙重疊率。"""
ctx_words = set(w for w in jieba.cut(context) if len(w) > 1)
cand_words = set(w for w in jieba.cut(candidate) if len(w) > 1)
if not cand_words:
return {"precision": 0.0, "recall": 0.0, "f1": 0.0}
overlap = ctx_words & cand_words
precision = len(overlap) / len(cand_words)
recall = len(overlap) / len(ctx_words) if ctx_words else 0
f1 = 2 * precision * recall / (precision + recall + 1e-9)
return {"precision": round(precision, 3),
"recall": round(recall, 3),
"f1": round(f1, 3)}
for i, s in enumerate(samples, 1):
score = lexical_overlap(s["context"], s["candidate"])
label = "幻覺" if s["is_hallucination"] else "正確"
print(f"[{i}] {label}|precision={score['precision']} recall={score['recall']} f1={score['f1']}")
# 輸出(範例):
# [1] 正確|precision=0.667 recall=0.500 f1=0.571
# [2] 幻覺|precision=0.500 recall=0.375 f1=0.429
# [3] 正確|precision=0.500 recall=0.500 f1=0.500
# [4] 幻覺|precision=0.333 recall=0.375 f1=0.353
這段用 jieba 斷詞後計算詞彙重疊率,是最經典也最弱的幻覺偵測方法。樣本 4 的「颱風假」沒出現在原文,precision 較低;樣本 2 的數字錯誤不會影響詞彙重疊(數字也算詞),所以分數下降不明顯。這是為什麼需要「語意層級」的方法——lexical overlap 抓 extrinsic 有用,抓 intrinsic 容易漏。實務上詞彙重疊通常作為輔助指標,跟 NLI、BERTScore 組合使用。
# 6. 整合:把四種方法組合成一個簡單的幻覺偵測器
def detect_hallucination(context: str, candidate: str,
nli_threshold: float = 0.5,
sim_threshold: float = 0.7) -> dict:
"""整合 self-consistency、NLI、語意相似度,給出綜合判斷。"""
# 用一次取樣 + 上下文相似度當 self-consistency 的代理
emb = st_model.encode([context, candidate], convert_to_tensor=True)
cos_sim = float(util.cos_sim(emb[0], emb[1])[0][0])
# NLI
nli = nli_check(context, candidate)
entail = nli.get("entailment", nli.get("ENTAILMENT", 0))
# 詞彙重疊
lex = lexical_overlap(context, candidate)
# 綜合分數:加權平均,NLI 權重最高
composite = 0.5 * entail + 0.3 * cos_sim + 0.2 * lex["f1"]
is_hallucination = (entail < nli_threshold) and (cos_sim < sim_threshold)
return {
"cos_sim": round(cos_sim, 3),
"nli_entail": entail,
"lex_f1": lex["f1"],
"composite": round(composite, 3),
"is_hallucination": is_hallucination,
}
print(f"{'標籤':<6} {'cos':<6} {'NLI':<6} {'lex':<6} {'綜合':<6} 判斷")
for s in samples:
r = detect_hallucination(s["context"], s["candidate"])
truth = "幻覺" if s["is_hallucination"] else "正確"
pred = "幻覺" if r["is_hallucination"] else "正確"
mark = "對" if truth == pred else "錯"
print(f"{truth:<6} {r['cos_sim']:<6} {r['nli_entail']:<6} {r['lex_f1']:<6} "
f"{r['composite']:<6} {pred} {mark}")
# 輸出(範例,實際數字會略有不同):
# 正確 0.872 0.852 0.571 0.795 正確 對
# 幻覺 0.794 0.143 0.429 0.401 幻覺 對
# 正確 0.756 0.781 0.500 0.679 正確 對
# 幻覺 0.681 0.198 0.353 0.357 幻覺 對(extrinsic 也能抓到,靠 cos_sim < 0.7)
這段把四種方法整合成單一偵測器。設計邏輯:NLI 抓 intrinsic(矛盾)、語意相似度抓 extrinsic(與上下文偏離)、詞彙重疊當輔助。composite score 是加權平均(NLI 0.5、cos_sim 0.3、lex 0.2),但最終判斷用「NLI entail < 0.5 且 cos_sim < 0.7」的 AND 條件——這樣可以同時抓住兩類幻覺。實務上 threshold 要依任務調整:醫療問答要更嚴格(NLI threshold 提到 0.7)、閒聊機器人可以放鬆(0.3)。整合方法的優點是不依賴單一指標的盲點;缺點是 threshold 調參困難,需要一份標註好的驗證集。
常見錯誤與踩雷
錯誤一:以為 faithfulness 與 factuality 是同一件事。兩者的偵測方法不同:faithfulness 用「與輸入比對」就能做(BERTScore、NLI),factuality 必須有外部事實來源(知識庫、搜尋引擎、Wikipedia)。如果你只做 faithfulness 偵測,模型寫「賈伯斯是蘋果公司的共同創辦人」這種「擺在事實上但不在輸入」的事實型錯誤會抓不到。對應排查方向:對事實型錯誤另外接一個查詢與外部知識比對的層次;Day 25 的 RAG 章節會教這個。
錯誤二:把 NLI 分數當成「幻覺機率」直接使用。NLI 模型是「對單一對句」給 entailment/neutral/contradiction 三個機率,總和為 1,但它並不是「候選事實正確的機率」。中性(neutral)不代表事實正確,可能只是模型判斷不了。對應排查方向:entailment 高可以放心、neutral 要再查、contradiction 高才算幻覺;不要把三個分數直接當機率解釋。
錯誤三:用過大的 NLI 模型以為會更準。很多人直覺選大模型(DeBERTa-v3-large、Llama 3.3 70B),以為會更準;事實上 faithfulness 是相對簡單的任務,mDeBERTa-v3-base 在多語言 NLI benchmark(Fakt-X、XNLI)上已經接近大型模型的 90% 表現,但速度快 5–10 倍。對應排查方向:先用 100–700 MB 的模型驗證流程;如果 recall 太低再升級到大型模型。
錯誤四:忽略中英文混合情境。台灣的應用常常中英混合(「用 PyTorch 做 fine-tuning」),但多語言 NLI 對中英混合的判斷會掉到 70% 左右。對應排查方向:把英文術語翻譯成中文、或用專門訓練中英 NLI 的模型(huggingface 上 MoritzLaurer/mDeBERTa-v3-base-mixed-xnli 系列有部分覆蓋);必要時對英文部分單獨跑英文 NLI。
錯誤五:把 self-consistency 當成唯一的偵測手段。Self-consistency 在 temperature > 0 時才有區別;如果模型刻意設 temperature=0(dev 環境常見),多次取樣都一樣,self-consistency 就退化成「與原樣本相似度」。對應排查方向:偵測階段要確保 temperature 是 0.5–0.8,或用多種 prompt 改寫來製造多樣性;不要在 temperature=0 的 production 環境期待 self-consistency 有用。
效能與實務提醒
CPU 上四種方法的效能差異很大。sentence-transformers 編碼在 384 維下速度極快:100 句話約 1 秒;NLI 模型一次推論約 0.5–1 秒;詞彙重疊幾乎免費。本篇的整合偵測器跑一筆樣本約 1.5–2 秒,跑 1,000 筆樣本約 30 分鐘。實務上的 batch 化(st_model.encode([...]) 一次編 32 句)可以把 throughput 提升 3–5 倍。
模型選擇的建議。語意相似度:all-MiniLM-L6-v2(英文最佳)、paraphrase-multilingual-MiniLM-L12-v2(多語言,CPU 友好)、intfloat/multilingual-e5-small(多語言,品質較高)。NLI:MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7(多語言 NLI 標準)、MoritzLaurer/ernie-m-large-mnli-xnli(中文特化)。中文任務還可以用 hfl/chinese-roberta-wwm-ext 搭配自訓練的 NLI head,但要先準備標註好的 entailment/contradiction 資料,工程成本較高。
緩解幻覺的實務順序:第一步是在 prompt 加上「如果不知道答案請說不知道,不要編造」,這對簡單任務能擋掉 30–40% 的幻覺;第二步是把任務導向 RAG 架構(Day 25 開始),讓模型引用外部知識而非憑記憶生成;第三步是 constrained decoding(Day 16 教的結構化輸出),把生成鎖定在已知範圍;第四步是加人類回饋的 RLHF 或 RLAIF,這需要較多工程資源。對中小團隊來說,prompt + RAG + 偵測器組合通常能擋掉 80% 以上的幻覺。
小結
今天把幻覺的可操作面寫清楚:成因(資料、訓練、推論三層)、分類(intrinsic vs. extrinsic、factuality vs. faithfulness)、偵測(self-consistency、NLI、語意相似度、詞彙重疊)、緩解(prompt、RAG、constrained decoding、人類回饋)。我們在 CPU 上用四種方法實作了一個整合偵測器,能同時抓 intrinsic(數字錯)與 extrinsic(新增原文沒有的資訊)兩類幻覺。整篇的核心訊息是「幻覺是 LLM 的內建特性,必須用工程手段處理,無法靠 prompt 完全消除」。明天 Day 21 會把焦點從「風險處理」轉到「能力建構」:對一個領域問答模型做 LoRA 微調,這是控制幻覺的根本方法——用自己的領域資料教模型正確答案,比靠 prompt 來得可靠。
結語
今天的核心訊息是「幻覺是 LLM 應用最常見的失敗模式,但不是無法處理的」。我們把幻覺的成因(資料、訓練、推論)、分類(faithfulness vs. factuality、intrinsic vs. extrinsic)、偵測(self-consistency、NLI、語意相似度、詞彙重疊)、緩解(prompt、RAG、constrained decoding、人類回饋)四個面寫過一遍,並在 CPU 上實作一個整合偵測器。讀完這篇你應該能回答:幻覺的 faithfulness 與 factuality 差別是什麼?intrinsic 與 extrinsic 怎麼分辨?NLI 為什麼抓不到 extrinsic?self-consistency 為什麼需要 temperature > 0?實際應用上哪些方法可以組合起來用?明天,我們會從「幻覺的偵測」轉到「模型的客製化」:對一個領域問答模型做 LoRA 微調,這是 Day 21 的核心,也是控制幻覺的根本工程手段。
延伸資源
- Ji 等人,2023,Survey of Hallucination in Natural Language Generation(ACM Computing Surveys):
https://dl.acm.org/doi/10.1145/3571730,幻覺問題的系統化定義與分類綜述。 - Maynez 等人,2020,On Faithfulness and Factuality in Abstractive Summarization(ACL 2020):
https://aclanthology.org/2020.acl-main.173/,faithfulness 與 factuality 的形式化定義與 intrinsic/extrinsic 分類。 - Manakul 等人,2023,SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models(EMNLP 2023):
https://arxiv.org/abs/2303.08896,self-consistency 偵測的經典方法。 - Kryscinski 等人,2020,Evaluating the Factual Consistency of Abstractive Text Summaries(NeurIPS 2020,FactCC):
https://arxiv.org/abs/1910.12840,factual consistency classifier 的訓練資料與模型。 - Honovich 等人,2022,TRUE: Re-evaluating Factual Consistency Evaluation(NAACL 2022):
https://arxiv.org/abs/2204.04991,factual consistency 評估的常見失敗模式與基準。 - Hugging Face sentence-transformers 官方文件(3.4,2025):
https://www.sbert.net/,本篇語意相似度主力的官方文件。
留言
張貼留言