用途:在构建任何检索增强生成(RAG)系统时调用该技能,指导完成从数据摄取到生成回答的完整流程。
主要能力:
- 文档加载:支持文件、网页、数据库等来源,示例含 PyPDFLoader、WebBaseLoader、DirectoryLoader 与 TextLoader。
- 文本切分:使用 RecursiveCharacterTextSplitter,可配置 chunk_size、chunk_overlap 与分隔符层级。
- 嵌入:使用 OpenAI 嵌入模型(如 text-embedding-3-small)。
- 向量存储:InMemory(仅内存,适合测试)、FAISS(本地高性能,可存磁盘)、Chroma(开发,可持久化)、Pinecone(生产托管,云端)。
- 检索:similarity_search、带分数检索、MMR(平衡相关性与多样性)、元数据过滤。
- 生成:将检索文档拼接为上下文,交给 ChatOpenAI 等模型生成回答。
- 智能体集成:可将检索封装为工具,供 create_agent 调用。
使用方式:按“索引(加载→切分→嵌入→存储)”与“检索(查询→嵌入→搜索→返回文档)”“生成(文档+查询→LLM→回答)”三段式组织。示例同时提供 Python 与 JavaScript 版本,导入路径与类名保持原样。
适用场景:需要基于自有文档问答、知识库检索、文档助手等 RAG 应用。
限制与注意:嵌入维度由模型决定,不可配置;同一向量库不可混用不同模型的嵌入;索引与查询必须使用相同嵌入模型;切分块过小会丢上下文、过大易触限,建议约 1000 字符、10%–20% 重叠;InMemory 存储重启即丢失;FAISS 的 Python 加载使用 pickle 元数据,仅在索引由自己创建并完全可控时才可启用 allow_dangerous_deserialization=True,否则应重建索引或改用无需 pickle 反序列化的后端;Pinecone 索引维度须与嵌入维度匹配。具体收费、价格与平台细节暂未提供。