全部文章

DeepSeek RAG 实战:搭一个检索增强流水线(OpenAI 兼容)

· 实战· RAG· DeepSeek

RAG(检索增强生成)是让模型基于你的数据作答的方法:在你的文档里检索相关片段,塞进提示,让模型基于这段上下文作答。生成这一步,正是 DeepSeek 这种又便宜又能打的模型发挥的地方:大多数 RAG 答案不需要前沿模型,需要的是好的检索加一个靠谱、便宜的生成器。

四步流水线

  1. 切块:把文档切成段落。
  2. 向量化并建索引:存进向量库(用你喜欢的任意 embedding 模型和向量库)。
  3. 检索:为查询取出最相关的几段。
  4. 生成:用 DeepSeek 基于这些段落生成答案。

本文聚焦第 4 步,也就是 DeepSeek 负责的部分,把检索当黑盒(Qdrant、pgvector、FAISS,随你)。

生成这一步

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TURILOOP_API_KEY"],
    base_url="https://api.turiloop.com/v1",
)

def answer_with_context(question: str, passages: list[str]) -> str:
    context = "\n\n".join(f"[{i+1}] {p}" for i, p in enumerate(passages))
    system = (
        "只用下面的上下文作答,引用来源标 [n];"
        "如果上下文里没有答案,就直说没有。"
    )
    r = client.chat.completions.create(
        model="deepseek-v4-flash",   # 多数 RAG 用便宜的就够
        messages=[
            {"role": "system", "content": system + "\n\n上下文:\n" + context},
            {"role": "user", "content": question},
        ],
        temperature=0.2,
    )
    return r.choices[0].message.content

RAG 为什么用 DeepSeek V4-Flash

RAG 里检索是重活,模型只要读段落、写出有依据的答案,这完全在 V4-Flash 的能力范围内。每 token 近乎为零的成本,让你能用很少的钱跑一个高流量知识库。只在需要跨多段真正综合或推理的问题上,才升级到 deepseek-v4-pro

两个省钱技巧

  • 把 system prompt 和指令放最前、可变问题放最后,这样命中提示缓存,不再为同样的指令每次付全价。
  • `temperature` 调低(0.1–0.3)保事实性,你要的是忠实答案,不是创意。

拼起来

向量库检索加 DeepSeek 生成,全在 Turiloop 一个 OpenAI 兼容的 Key 背后。先用 V4-Flash 省着跑,需要时按条升级。按量付费、国际卡、免中国手机号。

常见问题

RAG 用哪个 DeepSeek 模型最好? 多数 RAG 用 DeepSeek V4-Flash:检索是重活,所以一个能读好段落的便宜模型就够。只在需要跨多段综合或推理的问题上才升级到 DeepSeek V4-Pro。(见国产模型逐个说。)

DeepSeek 能配现有 RAG 框架吗? 能。因为 API 是 OpenAI 兼容的,LangChain、LlamaIndex 这类工具只要把 base URL 指向 Turiloop、模型设成 DeepSeek 的 id 就能用。一个 Key 调到所有模型

怎么压低 RAG 成本? 把 system prompt 和指令放最前以命中提示缓存,检索更少但更准的段落,默认用 V4-Flash。