news 2026/8/20 22:14:00

从零实践:基于RAG与官方API构建长上下文AI应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零实践:基于RAG与官方API构建长上下文AI应用

在实际 AI 开发和应用中,模型能力的每一次跃升都意味着新的可能性与挑战。当“百万上下文”这样的关键词出现时,它指向的不仅是技术参数的提升,更是对复杂任务处理、长文档理解、多轮对话连贯性等场景的彻底革新。对于开发者、研究者和技术爱好者而言,理解如何获取、验证并有效利用这种能力,是当前阶段一个非常实际且关键的技术课题。

本文将以一个具体的实践案例为线索,探讨如何通过现有工具链(如 Codex)来接触和测试传闻中的大上下文模型能力。我们将从核心概念澄清开始,逐步深入到环境准备、工具配置、能力验证以及过程中必然遇到的各种问题与排查方法。无论你是想评估模型能力以进行技术选型,还是希望在自己的项目中集成长上下文处理功能,这篇文章都将提供一条从零到一的实践路径。

1. 理解“百万上下文”与相关技术栈

在深入操作之前,必须厘清几个关键概念,这能帮助我们在后续步骤中做出正确的判断,避免因概念混淆而走入技术误区。

1.1 什么是“上下文窗口”?

上下文窗口(Context Window),在大型语言模型中,特指模型在一次推理过程中能够“看到”并处理的文本长度上限。这个长度通常以“令牌”(Token)为单位进行计量。对于英文文本,一个令牌大约相当于0.75个单词;对于中文,一个汉字通常对应1到2个令牌。

一个“百万上下文”的模型,理论上能够一次性处理约100万个令牌的输入文本。这相当于数百页的文档、数万行的代码库或长达数小时的对话记录。其核心价值在于:

  • 信息完整性:无需对超长文档进行切割、总结或丢失细节,模型可以基于完整信息进行推理。
  • 对话连贯性:在极长的多轮对话中,模型能记住更早的对话历史,保持回答的一致性。
  • 复杂任务处理:能够综合分析代码库、法律合同、研究论文等结构复杂的长文本。

1.2 GPT-5.6 Sol 与现有生态

根据网络上的讨论,“GPT-5.6 Sol”常被提及为一个具备百万上下文能力的模型。然而,一个至关重要的前提是:截至当前,OpenAI 官方并未发布名为“GPT-5.6 Sol”的模型。在 OpenAI 的官方 API 模型列表中,也查询不到此型号。

因此,当我们看到“通过 Codex 使用 GPT-5.6 Sol”这类信息时,需要保持高度警惕。这通常指向以下几种情况:

  1. 社区项目或第三方封装:可能是某个开源项目或第三方服务,对现有 API(如 GPT-4 Turbo 128K)进行了封装或命名,并声称具备扩展能力。
  2. 测试版或内部版本泄露:极小范围流传的未公开测试版本,其稳定性、可用性和访问方式均无保障。
  3. 概念混淆或误导信息:将其他平台或研究项目的模型能力错误地关联到了 OpenAI 或 Codex 上。

Codex本身是 OpenAI 的一个产品系列,最初以代码生成能力闻名(如 GitHub Copilot 的背后模型)。但现在“Codex”也可能指代一些社区开发的、用于连接不同 AI 模型 API 的客户端或工具。

1.3 当前可用的长上下文方案

在实践层面,我们应关注官方、稳定且可验证的方案。以下是截至当前(请注意技术迭代迅速)几种主流的处理长上下文的方法:

方案类型代表模型/服务官方上下文长度(约)核心实现方式适用场景
原生大窗口OpenAI GPT-4 Turbo128K tokens模型原生支持,一次性输入。处理百页以内的文档、长对话、代码文件分析。
API 参数扩展Anthropic Claude 3200K tokens通过API调用直接指定超大上下文。超长文档摘要、书籍分析、复杂研究。
外部记忆/检索LangChain, LlamaIndex理论上无限将长文本切片存入向量数据库,通过检索获取相关片段输入模型。知识库问答、海量文档分析、个性化AI应用。
滑动窗口/流式处理一些开源模型可变只处理当前最相关的文本片段,动态更新上下文。实时长文本流处理、成本敏感场景。

对于绝大多数开发者,结合检索增强生成(RAG)的技术方案,是处理超长上下文最可行、最经济且可控性最高的方法。它不依赖于某个特定“百万上下文”模型,而是通过工程架构解决信息过载问题。

2. 环境准备与工具选择

我们的目标是搭建一个能够测试和验证长文本处理能力的本地环境。这里不依赖任何未经证实的模型名称,而是使用稳定、可复现的工具链。

2.1 基础开发环境

首先,确保你的本地开发环境满足以下要求:

  • 操作系统:Windows 10/11, macOS, 或 Linux 发行版(如 Ubuntu 20.04+)。
  • Python:版本 3.8 至 3.11。推荐使用 3.10 以获得最佳的库兼容性。
  • 包管理工具pip(最新版)。
  • 代码编辑器:VS Code(推荐),并安装 Python 扩展。

可以通过以下命令检查你的 Python 环境:

python --version pip --version

2.2 核心依赖库安装

我们将使用openai官方库来调用 OpenAI API,并使用tiktoken库来精确计算文本的令牌数,这是评估上下文长度的关键。

创建一个新的项目目录,并在其中初始化虚拟环境并安装依赖:

# 创建项目目录并进入 mkdir long-context-test cd long-context-test # 创建并激活虚拟环境(以 macOS/Linux 为例) python -m venv venv source venv/bin/activate # 在 Windows 上激活命令为:venv\Scripts\activate # 安装核心依赖 pip install openai tiktoken # 可选:安装用于文档处理的库 pip install pypdf2 # 用于读取PDF pip install langchain langchain-openai # 用于构建RAG应用

2.3 获取并配置 API 密钥

要使用 OpenAI 的服务,你需要一个有效的 API 密钥。

  1. 访问 OpenAI 平台网站 。
  2. 登录或注册账号。
  3. 进入 “API Keys” 页面,点击 “Create new secret key” 生成一个新密钥。
  4. 妥善保管此密钥,它一旦生成将只显示一次。

在项目中,永远不要将 API 密钥硬编码在代码中或上传到版本控制系统(如 Git)。推荐使用环境变量管理:

在项目根目录创建一个名为.env的文件,内容如下:

OPENAI_API_KEY=你的实际API密钥

然后,安装python-dotenv库来加载环境变量:

pip install python-dotenv

2.4 关于“Codex”客户端的辨析

网络热词中频繁出现的“Codex”,可能指代多种事物:

  1. OpenAI Codex 模型:已基本被更新的 GPT 模型系列取代,不再推荐用于新项目。
  2. 第三方客户端/桌面应用:一些社区开发者创建的、集成了多个 AI 服务商 API 的图形化或命令行工具。这类工具的质量和安全性参差不齐。
  3. VS Code 扩展:可能与代码辅助相关的扩展。

重要建议:对于严肃的开发和生产工作,优先使用官方 SDK(如openaiPython 库)和 API。这能确保:

  • 稳定性:直接对接官方服务,避免中间层引入的不稳定因素。
  • 安全性:API 密钥的传输和处理更可控。
  • 功能时效性:第一时间获得官方模型更新和新功能。
  • 可维护性:代码依赖清晰,问题易于排查。

如果你遇到类似codex could not start the extensionthe ‘gpt-5.6-sol’ model is not supported的错误,这几乎可以肯定你正在使用一个第三方客户端,并且它尝试调用了一个不存在的模型。此时,最直接的解决方案是回归官方渠道。

3. 构建长上下文测试验证方案

我们将设计两个实验来验证模型的长文本处理能力:一是使用原生 API 处理长文本,二是构建一个简单的 RAG 系统来处理超长文本。

3.1 实验一:使用官方 API 测试上下文边界

这个实验的目标是确认你使用的模型实际支持的上下文长度,并观察其在边界附近的行为。

首先,创建一个test_context_window.py文件:

import os from openai import OpenAI from dotenv import load_dotenv import tiktoken # 加载环境变量 load_dotenv() # 初始化客户端 client = OpenAI(api_key=os.getenv(“OPENAI_API_KEY”)) def count_tokens(text, model=“gpt-4”): “””使用 tiktoken 计算文本的令牌数。””” try: encoding = tiktoken.encoding_for_model(model) except KeyError: encoding = tiktoken.get_encoding(“cl100k_base”) # GPT-4, GPT-3.5-Turbo 的编码 return len(encoding.encode(text)) def test_model_with_long_text(model_name, long_text): “””向指定模型发送长文本,并测试其响应。””” input_tokens = count_tokens(long_text, model_name) print(f“输入文本长度: {len(long_text)} 字符,约 {input_tokens} tokens。”) # 构造一个需要理解全文才能回答的问题 prompt = f“””以下是提供给您的文本: “{long_text}” 问题:请用一句话概括上述文本的核心主题。“”” try: response = client.chat.completions.create( model=model_name, messages=[ {“role”: “user”, “content”: prompt} ], temperature=0.5, max_tokens=150 # 限制回答长度 ) answer = response.choices[0].message.content print(f“模型 {model_name} 回复: {answer}”) print(f“本次调用消耗令牌: {response.usage.total_tokens}”) return True except Exception as e: print(f“模型 {model_name} 调用失败: {e}”) return False if __name__ == “__main__”: # 1. 准备长文本(这里用重复文本来模拟,实际应用应使用真实长文档) sample_text = “大型语言模型上下文窗口的扩展是AI发展的一个重要方向。 “ * 5000 # 或者从文件读取 # with open(“long_document.txt”, “r”, encoding=“utf-8”) as f: # sample_text = f.read() # 2. 测试不同模型 models_to_test = [“gpt-3.5-turbo”, “gpt-4-turbo-preview”] # 使用官方可用模型 for model in models_to_test: print(f“\n{‘=’*50}”) print(f“正在测试模型: {model}”) test_model_with_long_text(model, sample_text)

关键解释与操作

  1. 令牌计算tiktoken库是 OpenAI 开源的令牌化工具,计算方式与 API 计费一致,是评估文本是否超长的准确依据。
  2. 模型选择:代码中使用了gpt-3.5-turbo(16K上下文)和gpt-4-turbo-preview(128K上下文)这两个官方模型。请勿使用不存在的模型名称
  3. 运行与观察:运行脚本python test_context_window.py。观察输出,重点是:
    • 输入的令牌数是否接近或超过模型官方宣称的上下文限制。
    • 模型是否能成功回复。
    • 如果失败,错误信息是什么(如context_length_exceeded)。

3.2 实验二:构建简易 RAG 系统处理超长文本

当文本长度远超单个模型上下文时,RAG 是标准解决方案。下面构建一个最小化的 RAG 流程。

创建simple_rag.py文件:

import os from openai import OpenAI from dotenv import load_dotenv import tiktoken from typing import List import hashlib load_dotenv() client = OpenAI(api_key=os.getenv(“OPENAI_API_KEY”)) EMBEDDING_MODEL = “text-embedding-3-small” # 用于创建文本向量的模型 class SimpleRAG: def __init__(self): self.chunks = [] # 存储文本片段 self.embeddings = [] # 存储向量(此处简化,实际应用需向量数据库) def split_text(self, text: str, chunk_size: int = 1000, overlap: int = 200): “””将长文本按固定大小和重叠度切分成块。””” encoding = tiktoken.get_encoding(“cl100k_base”) tokens = encoding.encode(text) chunks = [] for i in range(0, len(tokens), chunk_size - overlap): chunk_tokens = tokens[i:i + chunk_size] chunk_text = encoding.decode(chunk_tokens) chunks.append({ “text”: chunk_text, “start_token”: i, “end_token”: i + len(chunk_tokens) }) return chunks def get_embedding(self, text: str): “””获取文本的向量表示。””” response = client.embeddings.create( model=EMBEDDING_MODEL, input=text ) return response.data[0].embedding def index_document(self, file_path: str): “””索引文档:切分并计算向量(此处简化,仅存储文本块)。””” with open(file_path, “r”, encoding=“utf-8”) as f: full_text = f.read() self.chunks = self.split_text(full_text) print(f“文档已切分为 {len(self.chunks)} 个块。”) # 实际项目中,这里应将 (chunk_text, embedding) 存入向量数据库(如 Chroma, Pinecone) # 为简化,我们只存储文本,并模拟一个基于关键词的简单检索 def retrieve(self, query: str, top_k: int = 3) -> List[str]: “””检索:根据查询找到最相关的文本块(此处为简单关键词匹配模拟)。""" # 这是一个极其简化的模拟检索。生产环境必须使用向量相似度搜索。 query_lower = query.lower() relevant_chunks = [] for chunk in self.chunks: if query_lower in chunk[“text”].lower(): relevant_chunks.append(chunk[“text”]) # 如果没找到关键词,返回前几个块 if not relevant_chunks: relevant_chunks = [c[“text”] for c in self.chunks[:top_k]] else: relevant_chunks = relevant_chunks[:top_k] return relevant_chunks def ask(self, query: str): “””问答:检索相关上下文,并发送给大模型生成答案。””” context_chunks = self.retrieve(query) context = “\n\n---\n\n”.join(context_chunks) prompt = f“””请基于以下提供的上下文信息回答问题。如果上下文不包含答案,请直接说“根据提供的信息无法回答”。 上下文: {context} 问题:{query} 答案:“”” try: response = client.chat.completions.create( model=“gpt-4-turbo-preview”, # 使用能力较强的模型生成最终答案 messages=[ {“role”: “system”, “content”: “你是一个基于提供文档进行问答的助手。”}, {“role”: “user”, “content”: prompt} ], temperature=0.2, max_tokens=500 ) return response.choices[0].message.content except Exception as e: return f“生成答案时出错: {e}” if __name__ == “__main__”: rag = SimpleRAG() # 假设你有一个长文档 `long_document.txt` rag.index_document(“long_document.txt”) while True: user_query = input(“\n请输入你的问题 (输入 ‘quit’ 退出): “) if user_query.lower() == ‘quit’: break answer = rag.ask(user_query) print(f“\n答案: {answer}”)

这个简易 RAG 的工作流程

  1. 索引:读取超长文档,将其切分成大小可控的文本块(Chunk)。
  2. 检索:当用户提问时,系统从所有文本块中找出与问题最相关的几个块(示例中为简化使用了关键词匹配,生产环境必须替换为向量相似度检索)。
  3. 生成:将检索到的相关文本块作为“上下文”,连同用户问题,一起发送给大语言模型,让其生成最终答案。

通过这种方式,无论原始文档有多长,最终送入模型的都是经过筛选的、长度可控的上下文,从而绕过了模型本身的上下文长度限制。

4. 关键配置、参数与性能考量

在实现长文本处理时,以下几个配置点至关重要,直接影响效果、成本和稳定性。

4.1 文本分块(Chunking)策略

分块是 RAG 的基石,糟糕的分块策略会导致信息割裂,严重影响答案质量。

参数说明推荐值/策略不当设置的后果
块大小 (chunk_size)每个文本块包含的令牌数。取决于模型:
• GPT-4 (128K): 可设 2000-4000
• GPT-3.5 (16K): 建议 500-1500
• 嵌入模型:通常 500-1000
过大:检索精度下降,仍可能超模型限制。
过小:语义不完整,模型缺乏足够上下文。
块重叠 (overlap)相邻文本块之间重叠的令牌数。通常为块大小的 10%-20%。为零:可能导致句子或关键信息被切分,检索时丢失边界信息。
分块依据按什么边界切分。优先按语义(段落、章节),其次按句子,最后按固定长度。纯按固定长度切分:极易割裂完整的语义单元。

改进的分块示例(使用 LangChain)

from langchain.text_splitter import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200, length_function=len, # 可以用 tiktoken 计算函数更准 separators=[“\n\n”, “\n”, “。”, “.”, “,”, “ “, “”] # 按此优先级尝试分割 ) chunks = text_splitter.split_text(long_text)

4.2 API 调用参数与成本控制

使用大上下文模型或频繁调用 API,成本是需要严肃考虑的问题。

参数影响建议
max_tokens限制模型回答的长度。根据问题复杂度设置,避免无意义的冗长回答以节省费用。
temperature控制回答的随机性(0-2)。事实性问答建议 0.1-0.3;创意生成可调高。
top_p核采样,影响词汇选择的集中度。通常与 temperature 二选一调整。
模型选择不同模型价格差异巨大。对性能要求不高的内部工具,可用gpt-3.5-turbo;对质量要求高的生产答案,用gpt-4-turbo

成本估算示例: 假设处理一个 100 万令牌的文档(纯输入)。

  • 使用gpt-4-turbo-preview(输入 $10 / 1M tokens):费用约为$10
  • 使用 RAG 方案,假设嵌入模型处理所有文本(text-embedding-3-small输入 $0.02 / 1M tokens),再检索出 5K tokens 上下文用gpt-4-turbo生成答案:嵌入费用约$0.02,生成答案费用约$0.05,总计约$0.07

RAG 在成本上的优势是压倒性的。

4.3 错误处理与重试机制

网络请求和 API 调用总会遇到失败,必须设计健壮的错误处理。

from tenacity import retry, stop_after_attempt, wait_exponential from openai import APIError, RateLimitError, APITimeoutError @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=2, max=10)) def robust_chat_completion(messages, model=“gpt-3.5-turbo”): “””一个带有重试机制的聊天补全函数。””” try: response = client.chat.completions.create( model=model, messages=messages, timeout=30.0 # 设置超时 ) return response except RateLimitError: print(“速率限制达到,等待后重试…”) raise # 让 tenacity 捕获并重试 except APITimeoutError: print(“API 请求超时,重试…”) raise except APIError as e: # 处理其他API错误,如上下文超长、模型不可用等 print(f“API 错误: {e}”) if “context_length” in str(e): # 专门处理上下文超长错误 return handle_context_too_long(messages) else: # 非重试性错误,直接抛出 raise e def handle_context_too_long(messages): “””当上下文超长时的降级处理策略。””” # 策略1:尝试切换到上下文更大的模型(如果可用且成本可接受) # 策略2:自动触发摘要或RAG流程 # 策略3:返回友好错误信息,提示用户缩短输入 return {“error”: “输入内容过长,请尝试缩短或分段处理。”}

5. 常见问题排查与实践陷阱

在实际操作中,你会遇到各种预期之外的问题。以下是一些典型问题及其排查思路。

5.1 模型调用失败与错误信息解读

错误现象可能原因排查步骤与解决方案
AuthenticationErrorAPI 密钥无效、过期或未设置。1. 检查.env文件中的OPENAI_API_KEY是否正确。
2. 在终端执行echo $OPENAI_API_KEY(Linux/macOS) 或echo %OPENAI_API_KEY%(Windows) 确认环境变量已加载。
3. 登录 OpenAI 平台确认密钥状态。
RateLimitError免费额度用完或付费账户速率超限。1. 检查账户余额和用量。
2. 实现指数退避重试机制(如上文tenacity示例)。
3. 对于生产系统,考虑申请提升速率限制。
InvalidRequestError: context_length_exceeded输入文本超过模型上下文限制。1. 使用tiktoken精确计算输入令牌数。
2. 实施文本分块(Chunking)策略。
3. 考虑使用上下文更大的模型(如从 gpt-3.5-turbo 切换到 gpt-4-turbo)。
InvalidRequestError: model not found使用了不存在的模型名称。1.立即停止使用gpt-5.6-sol等非官方名称。
2. 查阅 OpenAI 官方模型列表 获取当前可用模型。
3. 使用client.models.list()API 列出所有可用模型。
APIConnectionError / Timeout网络连接问题或服务器响应慢。1. 检查本地网络。
2. 增加timeout参数值。
3. 实现重试逻辑。

5.2 RAG 效果不佳的调试路径

如果你的 RAG 系统回答质量差,可以按以下顺序排查:

  1. 检索阶段问题

    • 症状:答案与文档无关,或遗漏关键信息。
    • 检查:打印出retrieve函数返回的上下文块。它们真的与问题相关吗?
    • 解决将关键词匹配替换为向量检索。使用text-embedding-3-small模型为文档块和问题生成向量,然后计算余弦相似度,返回最相似的块。这是 RAG 有效的核心。
  2. 分块阶段问题

    • 症状:答案支离破碎,无法理解跨块的逻辑。
    • 检查:查看分块后的文本,是否在句子中间、段落中间被切断?
    • 解决:调整分块策略,使用RecursiveCharacterTextSplitter并按语义分隔符(如\n\n)分割,并设置合理的重叠度。
  3. 提示工程问题

    • 症状:模型无视提供的上下文,基于自身知识胡编乱造。
    • 检查:构造给模型的最终 Prompt。是否清晰指示了“仅基于上下文回答”?
    • 解决:在 System Prompt 和 User Prompt 中加强指令。例如:
      system_prompt = “””你是一个严谨的文档助手。你必须严格根据用户提供的上下文来回答问题。如果上下文中没有明确答案,你必须说‘根据提供的资料,我无法回答这个问题’。绝对不要编造信息。”””

5.3 关于“Codex”第三方客户端的特别警告

如果你因为搜索“Codex”而安装了某个桌面应用或 CLI 工具,并遇到如下错误:

  • The ‘gpt-5.6-sol’ model is not supported
  • Codex could not start the extension
  • Failed to load config.toml

这强烈表明该工具:

  1. 集成了不存在的或未经验证的模型接口。
  2. 可能存在配置错误、版本兼容性问题或安全风险。
  3. 其开发可能已停止,无法跟上官方 API 的更新。

行动建议

  1. 对于学习和开发,卸载不稳定的第三方客户端。
  2. 直接使用openaiPython/Node.js SDK 或通过官方 Playground 进行测试。
  3. 如果需要一个集成的桌面环境,可以考虑一些成熟的开源项目(如Open WebUI),并确保其配置指向合法的官方 API 或你自行部署的开源模型。

6. 生产环境最佳实践与扩展方向

将长文本处理能力从实验推向生产,需要额外的工程化考量。

6.1 生产就绪的架构建议

一个健壮的生产级长文本处理系统应包含以下组件:

  1. 文档加载与解析器:支持 PDF、Word、HTML、Markdown、TXT 等多种格式。
  2. 智能文本分块器:结合语义分割和固定长度,确保块内语义完整。
  3. 向量数据库:使用专业的向量数据库(如ChromaQdrantWeaviatePinecone)存储和检索嵌入向量。它们支持高效的相似性搜索和元数据过滤。
  4. 检索器:结合密集向量检索和稀疏检索(如 BM25),提升召回率。
  5. 重排序器:对检索出的多个文档块进行精排,选择最相关的几个送入 LLM。
  6. 提示模板与模型路由:根据问题类型和复杂度,动态选择不同的提示词或模型(如简单问题用便宜模型,复杂分析用强模型)。
  7. 缓存层:对相同的查询和文档块进行缓存,大幅降低成本和延迟。
  8. 监控与日志:记录每次调用的令牌数、成本、延迟和用户反馈,用于优化和审计。

6.2 使用 LangChain 快速搭建原型

对于快速验证和原型开发,LangChain 框架极大地简化了流程:

from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_community.vectorstores import Chroma from langchain.chains import RetrievalQA # 1. 加载文档 loader = TextLoader(“long_document.txt”) documents = loader.load() # 2. 分割文本 text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) texts = text_splitter.split_documents(documents) # 3. 创建向量存储 embeddings = OpenAIEmbeddings(model=“text-embedding-3-small”) vectorstore = Chroma.from_documents(texts, embeddings, persist_directory=“./chroma_db”) retriever = vectorstore.as_retriever(search_kwargs={“k”: 4}) # 检索前4个相关块 # 4. 创建问答链 llm = ChatOpenAI(model=“gpt-4-turbo-preview”, temperature=0) qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type=“stuff”, # 还有其他如 map_reduce, refine 等处理长上下文的方式 retriever=retriever, return_source_documents=True # 返回参考来源 ) # 5. 提问 result = qa_chain.invoke({“query”: “文档中主要讨论了哪几个方面?”}) print(“答案:”, result[“result”]) print(“来源:”, result[“source_documents”])

6.3 扩展方向:超越简单问答

掌握了基础的长文本处理能力后,可以考虑以下更复杂的应用:

  • 多文档问答:扩展系统,使其能够同时索引和检索来自多个文件或数据源的信息。
  • 对话历史管理:在 RAG 基础上,加入对多轮对话历史的有效管理,使 AI 能参考之前的问答上下文。
  • 混合检索:结合关键词检索、向量检索和知识图谱,提供更精准的信息查找。
  • 智能摘要:针对超长文档,实现多粒度摘要(全文摘要、章节摘要、主题摘要)。
  • 代码库分析:专门针对代码仓库进行解析、检索和问答,用于辅助编程和理解项目。

长上下文模型的进化不会停止,但作为应用开发者,我们的重点不应是追逐某个未经证实的模型代号,而是掌握以 RAG 为代表的可控、可扩展、成本效益高的工程架构。通过本文的实践路径,你已经可以构建出能够处理海量文本信息的智能应用。接下来,深入优化检索质量、提示工程和系统架构,将是提升应用效果的关键。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 22:13:54

EPS功能安全:从ASIL B到D的演进与系统化工程实践

1. 从“辅助”到“守护”:EPS功能安全为何成为焦点最近在跟几个做底盘电子的朋友聊天,话题总绕不开一个词:功能安全。特别是聊到电动助力转向系统,也就是我们常说的EPS,大家的感觉是,这玩意儿以前就是个“力…

作者头像 李华
网站建设 2026/8/20 22:13:52

免费商用不将就:思源宋体7字重从安装到实战的完整指南

免费商用不将就:思源宋体7字重从安装到实战的完整指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为一张海报的中文字体版权提心吊胆,或总觉得系统自带…

作者头像 李华
网站建设 2026/8/20 22:11:41

系统架构设计师考点全纪要(自己整理,本人一次稳过)

目录前言关于考点纪要关于备考的建议VIP资源下载链接前言 本人今年下半年刚刚参加的软考系统架构设计师考试,一次稳过,三门均在60分以上(标准线45分)。下面有偿分享下本人自己整理的考点内容。 下载链接在最底部 关于考点纪要 …

作者头像 李华
网站建设 2026/8/20 22:05:06

基于SpringBoot的高校爱心捐赠系统

一、关键词高校爱心捐赠、公益活动管理、物资捐赠、爱心榜单、校园公益二、作品包含源码数据库设计文档PPT全套环境和工具资源本地部署教程三、项目技术前端技术: Html、Css、Js、Vue3.4、Element-Plus后端技术:Java、SpringBoot3.3.1、MyBatis四、运行环…

作者头像 李华
网站建设 2026/8/20 22:04:47

微信小程序NFC卡读写,MifareClassic1K卡,M1卡片读写教程

最近来了个离谱的需求,要用微信小程序读写NFC卡数据,微信官方文档可以说是垃圾的一批了,啥都没有,踩了好几天坑把整体思路记录一下。 如果需要DEMO可直达下载链接:https://download.csdn.net/download/weixin_6598484…

作者头像 李华