跳到正文
土土金API

企業知識庫與 RAG

企業知識庫問答(RAG)用三類模型:Embeddings 把文件和問題轉成向量,Rerank 給檢索結果重新排序,對話模型根據檢索到的資料寫出回答。按下面的假設(2,000 篇文件入庫、每月 3 萬次提問),用各模型最低價分組的即時價格計算,每月模型費用約 ¥389。

價格更新於 2026年11月13日 凌晨1:33

月成本估算

假設:知識庫 2,000 篇文件、平均每篇 2,500 tokens;每月 3 萬次提問(約每天 1,000 次);每次召回 20 個候選塊(約 6,000 tokens)重排,最終給對話模型約 3,000 tokens 資料,回答約 400 tokens。

¥388.57/ 月

  • 文件首次向量化(一次性)¥1.3
  • 問題向量化¥0.312
  • 候選段落重排¥0.554
  • 生成回答¥386.4
看用量假設

業務問題

產品手冊、內部制度、合同模板、歷史工單散落在不同系統裡,員工和客戶想找一個答案,往往要翻好幾份文件或者找人問。

直接問大模型,它不瞭解你們的內部資料,容易一本正經地編答案;把所有文件塞進提示詞,費用高,也很快超出上下文長度。

RAG(檢索增強生成)先從知識庫裡找出和問題相關的幾段原文,再讓模型只根據這幾段作答。資料更新後重新入庫即可,不需要訓練模型,每次回答也能附上出處,方便核對。

推薦模型組合

推薦模型按即時目錄自動選取,價格取各模型最低價分組,更新於 2026年11月13日 凌晨1:33。點模型名可檢視全部分組價格。

參考架構

  1. 1

    解析與切塊

    把 PDF、Word、網頁、工單等資料轉成純文本,按 300 到 800 字切成塊,每塊保留標題、來源連結和更新時間。

  2. 2

    向量化入庫

    呼叫 Embeddings 介面把每個文本塊轉成向量,連同原文一起寫入向量資料庫,例如 pgvector、Milvus、Qdrant 或 Elasticsearch。

  3. 3

    召回候選

    使用者提問時,用同一個向量模型把問題轉成向量,取最相近的 20 到 50 個文本塊;也可以同時做關鍵詞檢索,再合併結果。

  4. 4

    重排篩選

    呼叫 Rerank 介面給候選文本塊打相關性分數,保留前 5 個左右。

  5. 5

    生成回答

    把保留的文本塊編號後連同問題一起交給對話模型,要求它只依據資料作答、用 [1] 這樣的編號標註出處,資料不足時直接說不知道。

  6. 6

    評估迭代

    記錄使用者的點贊點踩和答不上來的問題,定期補文件、調整切塊大小和提示詞。

成本估算

假設:知識庫 2,000 篇文件、平均每篇 2,500 tokens;每月 3 萬次提問(約每天 1,000 次);每次召回 20 個候選塊(約 6,000 tokens)重排,最終給對話模型約 3,000 tokens 資料,回答約 400 tokens。

專案模型用量假設費用
文件首次向量化(一次性)text-embedding-3-large2,000 次 × 輸入 2,500 tokens¥1.3
問題向量化text-embedding-3-large30,000 次 × 輸入 40 tokens¥0.312
候選段落重排qwen3-reranker-8b30,000 次 × 輸入 6,000 tokens¥0.554
生成回答deepseek-v4.1-flash30,000 次 × 輸入 3,000 + 輸出 400 tokens¥386.4
合計(每月)¥388.57

按各模型最低價分組的即時價格計算,價格更新於 2026年11月13日 凌晨1:33。

只含模型呼叫費用,不含向量資料庫和伺服器成本。文件首次入庫是一次性費用,之後只需對新增或修改的文件重新向量化。系統提示詞較長且模型支援上下文快取時,命中快取的部分按更低的快取讀取價計費,實際費用會更低。

示例程式碼

用 OpenAI SDK 呼叫向量和對話介面,用 HTTP 請求呼叫重排介面。向量資料庫部分換成你自己的實現。

示例程式碼(Python)
import os
import requests
from openai import OpenAI

API_KEY = os.environ["TUTUJIN_API_KEY"]
client = OpenAI(base_url="https://www.tutujin.com/v1", api_key=API_KEY)


def embed(texts):
    """Turn document chunks or a question into vectors."""
    resp = client.embeddings.create(model="text-embedding-3-large", input=texts)
    return [d.embedding for d in resp.data]


def rerank(query, docs, top_n=5):
    """Re-score retrieved chunks and keep the most relevant ones."""
    r = requests.post(
        "https://www.tutujin.com/v1/rerank",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"model": "qwen3-reranker-8b", "query": query, "documents": docs, "top_n": top_n},
        timeout=30,
    )
    r.raise_for_status()
    return [docs[x["index"]] for x in r.json()["results"]]


def answer(question, chunks):
    context = "\n\n".join(f"[{i + 1}] {c}" for i, c in enumerate(chunks))
    resp = client.chat.completions.create(
        model="deepseek-v4.1-flash",
        messages=[
            {"role": "system", "content": "Answer only from the given sources and cite them like [1]. If the sources do not say, reply that you do not know."},
            {"role": "user", "content": f"Sources:\n{context}\n\nQuestion: {question}"},
        ],
        temperature=0.2,
    )
    return resp.choices[0].message.content


# candidates = your_vector_db.search(embed([question])[0], k=20)
# print(answer(question, rerank(question, candidates)))

用一把 Key 試試這個方案

註冊後在控制台建立 API Key,把上面程式碼裡的 base_url 和 Key 換成你的就能執行。企業採購、開發票可以加客服微信 JsnonoChat。

土土金客服微信二維碼
微信JsnonoChat

掃碼或搜尋微信號新增客服

常見問題

企業知識庫問答每月大概花多少錢?

取決於提問量和每次帶入的資料長度。按 2,000 篇文件入庫、每月 3 萬次提問、每次給模型約 3,000 tokens 資料的假設,用最低價分組計算,每月模型費用約 ¥389。提問量翻倍,費用大致也翻倍。

一定要用 Rerank 嗎?

不是必須。文件少、問題比較固定時,只用向量檢索就夠了。文件多、同一件事有好幾種問法時,加一步重排通常能明顯減少答非所問,交給對話模型的無關段落也更少,輸入 tokens 跟著下降。

中途更換向量模型,要重建索引嗎?

要。不同向量模型生成的向量不能混用,換模型後需要把全部文件重新向量化入庫,查詢時也要用新模型。所以上線前最好先用一小批文件對比幾個向量模型的檢索效果再定。

可以全部用國產模型嗎?

可以。向量、重排和對話都有國產模型可選,例如向量用 qwen3-embedding-8b、重排用 qwen3-reranker-8b、對話用 deepseek-v4.1-flash,呼叫方式不變,只需要改 model 參數。

怎麼讓回答附上出處?

切塊時給每塊儲存來源連結和標題;交給模型時按 [1]、[2] 編號,並在系統提示詞裡要求按編號標註出處;前端再把編號映射回原文連結。