YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Gemma-Embed Stage 1:自建中文向量編碼器

📋 專案概覽

Gemma-Embed 是基於 Google Gemma-3-1B 的自建向量編碼器,專為支援「向量反推文字」任務而設計。透過 LoRA 微調技術,我們構建了一個完全可控的潛在語義空間,為後續的向量逆向工程奠定基礎。

🔧 技術規格

  • 基礎模型google/gemma-3-1b-pt
  • 微調架構:LoRA(Low-Rank Adaptation)
    • Rank = 8
    • 目標層:q_projv_proj
  • 輸出維度:1152 維向量(L2 正規化)
  • 當前階段:✅ Phase 1 完成(無監督 SimCSE)
  • 規劃階段:🔄 Phase 2 & 3 開發中

🎯 專案動機與技術背景

核心挑戰

Query Fan-Out 應用場景中,我們需要實現「向量到文字的反向推導」。然而,現有的商業嵌入模型(如 mxbai-embed、GTR-T5 等)存在以下限制:

  • 黑盒潛在空間:無法透視內部語義結構
  • 不可逆映射:難以從向量重構原始語義
  • 語言特化不足:對中文語境優化有限

解決方案

採用 Gemma-3-1B 作為編碼器骨幹,通過階段性微調構建可控的語義向量空間:

  1. 完全透明:掌控模型內部機制
  2. 可逆設計:為向量反推提供技術基礎
  3. 中文優化:針對中文語料深度調優

🚀 Phase 1:無監督 SimCSE 實現

訓練配置

配置項目 詳細說明
語料來源 text.txt
語料構成 金融新聞標題、維基百科句子、技術 FAQ、常見問答
文本預處理 UTF-8 編碼,單行單句,長度限制 ≤ 128 tokens
損失函數 InfoNCE Contrastive Loss
溫度參數 τ = 0.05(控制對比學習敏感度)
批次大小 12 samples/batch
訓練輪數 1 epoch
學習率 1e-5(Adam 優化器)
硬體需求 0.5 × NVIDIA H100 80GB
訓練時長 約 40 分鐘

性能表現

評測基準:自建金融領域 STS(Semantic Textual Similarity)驗收資料集

評測指標 微調前 微調後 提升幅度
平均 Cosine 相似度 - - +4~6 pts
語義匹配準確度 - - 顯著提升

💻 快速部署指南

環境要求

pip install transformers torch peft

模型載入與使用

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
import torch.nn.functional as F

# 模型配置
BASE_MODEL = "unsloth/gemma-3-1b-pt"
ADAPTER_MODEL = "ywchiu/gemma-embed-peft"  # 替換為實際 repo 路徑

# 載入模型組件
tokenizer = AutoTokenizer.from_pretrained(ADAPTER_MODEL)
base_model = AutoModelForCausalLM.from_pretrained(
    BASE_MODEL,
    device_map="auto",
    torch_dtype=torch.float16  # 節省顯存
)
model = PeftModel.from_pretrained(
    base_model,
    ADAPTER_MODEL,
    device_map="auto"
).eval()

def encode_sentences(sentences):
    batch = tok(sentences, padding=True, truncation=True, return_tensors="pt").to(model.device)
    with torch.no_grad():
        out = model(base_model_output=False, **batch, output_hidden_states=True)
        vec = out.hidden_states[-1][:, 0]  
        return F.normalize(vec, p=2, dim=-1)

# 使用範例
test_sentences = [
    "台積電法說會重點摘要",
    "TSMC earnings call highlights",
    "S&P 500 指數收高",
    "美股標普 500 上漲"
]

embeddings = encode_sentences(test_sentences)
print(f"輸出向量形狀: {embeddings.shape}")  # torch.Size([4, 1152])

🗺 後續開發路線圖

Phase 2:監督式對比學習

  • 目標:整合標註資料,提升特定領域性能
  • 數據:金融問答對、語義相似度標註資料
  • 預期效果:領域專用語義理解能力提升

Phase 3:多任務聯合訓練

  • 目標:同時優化嵌入品質與可逆性
  • 技術:結合重構損失與對比學習
  • 應用:為 Query Fan-Out 提供完整技術支撐

📊 技術亮點

輕量化架構:1152 維向量,平衡性能與計算效率
中文優化:針對中文語義特性深度調優
完全可控:自主掌控模型與潛在空間
快速部署:支援 GPU/CPU 推理,易於集成
可擴展性:為後續階段開發預留接口


Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support