织梦网站维护在线室内设计网站
2026/2/12 3:24:44 网站建设 项目流程
织梦网站维护,在线室内设计网站,外贸石材网站,怎么让网站被收录基于 FastGPT 的 RAG 系统实现系统概述本文介绍如何基于 FastGPT 构建的知识库实现 LangChain.js RAG 系统。核心流程FastGPT 文档处理 向量存储 PostgreSQL MongoDB RAG系统 用户问答FastGPT 的作用FastGPT 负责#xff1a;• 文档管理#xff1a;上传、切分、向量化文档•…基于 FastGPT 的 RAG 系统实现系统概述本文介绍如何基于 FastGPT 构建的知识库实现 LangChain.js RAG 系统。核心流程FastGPT 文档处理 向量存储 PostgreSQL MongoDB RAG系统 用户问答FastGPT 的作用FastGPT 负责• 文档管理上传、切分、向量化文档• QA 生成自动从文档生成问答对• 数据存储向量存储在 PostgreSQL文本存储在 MongoDB• 可视化管理Web 界面管理知识库LangChain.js RAG 系统负责• 读取数据从 FastGPT 的数据库读取知识• 向量检索找到相关的 QA 对• 增强生成基于检索结果回答用户问题为什么要使用 LangChain.js RAG既然 FastGPT 已经提供了完整的知识库管理和问答能力为什么还需要构建 LangChain.js RAG 系统核心优势1. 深度定制化• FastGPT提示词和交互逻辑固定难以深度定制• LangChain.js RAG完全控制提示词、Agent 行为、响应格式2. 工具生态集成• FastGPT也可以集成工具但集成方式有限• LangChain.js RAG更方便地集成 MCP 工具、自定义 API、数据库操作、业务系统等3. Agent 编排能力• FastGPT简单的问答交互• LangChain.js RAG使用 LangGraph 构建复杂 Agent 工作流支持多步推理、工具链、条件分支等4. 可扩展性• FastGPT功能受限于 FastGPT 的更新节奏• LangChain.js RAG随时集成最新的 AI 能力和工具快速响应业务需求系统架构整体架构LangChainRAG Storage FastGPT 文档上传 文档切分 QA生成 向量化 PostgreSQL MongoDB 读取知识库 向量检索 生成回答数据流转FastGPT 到 LangChain.js RAG 系统的完整流程阶段 1知识库构建FastGPT 负责1. 用户通过 FastGPT Web 界面上传文档2. FastGPT 自动将文档切分为小段落3. 为每个段落生成对应的问答对4. 调用 OpenAI Embedding API 将问题向量化5. 向量存储到 PostgreSQLQA 对存储到 MongoDB阶段 2知识检索LangChain.js RAG 负责6. 用户在 LangChain.js RAG 系统中提问7. LangChain.js RAG 系统读取问题向量化后查询 PostgreSQL8. PostgreSQL 返回最相似的向量 ID9. LangChain.js RAG 系统用向量 ID 从 MongoDB 读取完整 QA 对10. LangChain.js RAG 系统将 QA 内容作为上下文发送给 AI 模型生成回答FastGPT 数据结构PostgreSQL 向量表FastGPT 使用 PostgreSQL 存储文档的向量表示-- FastGPT 创建的向量表 CREATE TABLE modeldata ( id BIGSERIAL PRIMARY KEY, vector VECTOR(1536) NOT NULL, team_id VARCHAR(50) NOT NULL, dataset_id VARCHAR(50) NOT NULL, collection_id VARCHAR(50) NOT NULL, createtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 向量相似度索引 CREATE INDEX ON modeldata USING ivfflat (embedding vector_cosine_ops);关键字段说明字段类型说明idBIGSERIAL向量唯一 IDvectorVECTOR(1536)1536 维向量dataset_idVARCHAR(50)知识库 IDcollection_idVARCHAR(50)集合 IDMongoDB QA 表FastGPT 使用 MongoDB 存储问答对和元数据// FastGPT 的数据集数据集合 { _id: ObjectId(...), q: 如何配置环境变量, a: 可以通过项目的 .env 文件配置..., indexes: [ { dataId: vector_id_123, text: 环境变量配置包括 API 密钥... } ], datasetId: 683eab4063699a9c20d35ebb, createTime: ISODate(2026-01-08T10:00:00Z) }数据关联流程用户问题 Embedding API 问题向量 PostgreSQL向量搜索 获取向量 ID MongoDB查询QA 问答对内容LangChain.js RAG 系统实现技术栈本项目使用LangChain.js框架实现 RAG 系统。系统分工•FastGPT负责知识库管理文档上传、切分、向量化、存储•LangChain.js RAG负责从 FastGPT 数据库读取和检索1. 读取 FastGPT 知识库连接数据库LangChain.js RAG 系统需要同时连接 FastGPT 使用的 PostgreSQL 和 MongoDB// 连接 FastGPT 数据库 const pgPool new Pool({ connectionString: postgresql://host:5432/fastgpt }); const mongoClient new MongoClient(mongodb://host:27017/fastgpt); const datasetCollection mongoClient.db(fastgpt).collection(dataset_datas);查询知识库// 搜索知识库 async function searchFastGPTKnowledge(datasetId, query, limit 5) { // Step 1: 向量化问题 queryVector await getEmbedding(query); // Step 2: 在 PostgreSQL 中搜索相似向量 vectorResults await searchVectors(datasetId, queryVector, limit); // Step 3: 从 MongoDB 获取 QA 内容 qaPairs await getQAPairs(datasetId, vectorResults.map(r r.id)); // Step 4: 合并结果 return vectorResults.map(vectorResult { const qaPair qaPairs.find(qa qa.indexes.some(idx idx.dataId vectorResult.id) ); return { question: qaPair?.q || , answer: qaPair?.a || , similarity: vectorResult.score }; }); }2. 向量检索PostgreSQL 向量搜索// 向量相似度搜索 async function searchVectors(datasetId, queryVector, limit 5) { const query SELECT id::text, collection_id, (vector $1::vector) * -1 AS score FROM modeldata WHERE dataset_id $2 ORDER BY vector $1::vector LIMIT $3 ; return await pgPool.query(query, [ JSON.stringify(queryVector), datasetId, limit ]); }查询说明•vector $1::vector计算余弦距离•* -1转换为相似度分数•ORDER BY按相似度降序排列MongoDB QA 查询// 获取 QA 对 async function getQAPairs(datasetId, vectorIds) { return await datasetCollection.find({ datasetId: datasetId, indexes.dataId: { $in: vectorIds } }).toArray(); }3. Embedding 服务// 获取向量 async function getEmbedding(text) { const response await openai.embeddings.create({ model: text-embedding-3-large, input: text }); return response.data[0].embedding; }LangChain.js 集成为什么使用 LangChain.jsLangChain.js 的优势• 工具封装将知识库检索封装为 LangChain Tool• Agent 编排自动决定何时使用知识库• 提示词管理自动构建包含检索结果的提示词• 多工具组合知识库 MCP 工具 其他工具创建 LangChain Tool// 创建知识库工具 function createFastGPTKnowledgeTool(datasetId) { return new StructuredTool({ name: search_fastgpt_knowledge, description: 从 FastGPT 知识库搜索相关信息, func: async ({ query }) { // 调用 FastGPT 检索 const results await searchFastGPTKnowledge(datasetId, query, 5); // 格式化输出 return results.map((result, index) 【来源 ${index 1}】相似度: ${(result.similarity * 100).toFixed(1)}% 问题${result.question} 答案${result.answer} ).join(\n\n); } }); }创建 LangChain Agent// 创建 Agent async function createAgent() { const DATASET_ID 683eab4063699a9c20d35ebb; // 创建知识库工具 const knowledgeTool createFastGPTKnowledgeTool(DATASET_ID); // 创建 AI 模型 const model new ChatOpenAI({ model: gpt-4o, apiKey: process.env.OPENAI_API_KEY }); // 创建 LangChain Agent const agent await createReactAgent({ name: fastgpt-rag-agent, model, tools: [knowledgeTool], systemPrompt: 你是一个技术支持助手。 ## 工作流程 1. 用户提问时首先使用知识库工具检索相关信息 2. 基于检索结果提供准确答案 3. 引用信息来源和相似度分数 }); return agent; }LangChain 工作流程LLMFastGPT DBKnowledge ToolLangChain Agent用户LLMFastGPT DBKnowledge ToolLangChain Agent用户提问分析问题决定使用工具调用知识库工具查询向量查询 QA返回结果返回 QA 内容构建提示词发送到 LLM生成回答返回答案 来源总结本系统通过结合 FastGPT 的知识库管理能力和 LangChain.js 的灵活编排能力构建了一个可深度定制、易扩展的 RAG 系统。这种架构允许我们1. 利用 FastGPT 的可视化界面管理知识库2. 通过 LangChain.js 实现复杂的 Agent 工作流3. 灵活集成各种工具和 API4. 完全控制提示词和响应格式适用于需要深度定制化、复杂业务逻辑集成的企业级应用场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询