You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将LangChain向量库检索结果与完整文档一同传入OpenAI?

LangChain 实现指定完整文档与向量库检索结果一同传入OpenAI

LangChain完全支持将指定完整任务文档与向量库检索结果一起传给OpenAI的需求,下面是两种适合新手的修改方案,基于你提供的代码调整:

方案一:自定义提示模板,整合固定文档与检索结果

这种方式直接在prompt里加入固定任务文档的内容,让LLM同时参考固定文档和检索到的内容。

  1. 读取指定的完整任务文档
    先把你的任务文档内容读入变量:

    // 替换为你的任务文档路径
    const taskDocContent = await fs.readFileSync('./task-document.txt', 'utf8');
    
  2. 自定义RetrievalQAChain的提示模板
    创建包含固定文档占位符的prompt,让链同时接收固定文档、检索内容和用户问题:

    const customPrompt = new PromptTemplate({
      template: `请结合以下固定任务文档和检索到的相关内容回答用户问题:
    
    

固定任务文档:
{task_doc}

检索到的相关文档:
{context}

用户问题:{question}`,
inputVariables: ['task_doc', 'context', 'question'],
});

3. **创建带自定义prompt的RetrievalQAChain**
在创建链时传入自定义的prompt:
```javascript
const chain = RetrievalQAChain.fromLLM(model, vectorStore.asRetriever(), {
  prompt: customPrompt,
});
  1. 调用链时传入固定文档内容
    注意把原来的query参数名改成question避免和prompt变量混淆:
    // userPrompt是你的用户问题
    const chatGptRes = await chain.call({
      question: userPrompt,
      task_doc: taskDocContent,
    });
    

方案二:合并固定文档与检索结果后传入链

这种方式先获取向量库的检索结果,再把固定文档和检索结果合并后一起传给LLM,灵活性更高。

  1. 获取向量库的检索结果

    const retriever = vectorStore.asRetriever();
    const retrievedDocs = await retriever.getRelevantDocuments(userPrompt);
    
  2. 合并固定文档与检索结果
    把固定文档包装成LangChain的Document对象,和检索结果合并:

    const taskDoc = new Document({ pageContent: taskDocContent });
    const combinedDocs = [taskDoc, ...retrievedDocs];
    
  3. 创建文档合并链并调用
    使用StuffDocumentsChain把所有文档内容整合到prompt中,再传给LLM:

    const llmChain = new LLMChain({
      llm: model,
      prompt: new PromptTemplate({
        template: `请结合以下所有文档内容回答用户问题:
    
    

{context}

用户问题:{question}`,
inputVariables: ['context', 'question'],
})
});

const combineChain = new StuffDocumentsChain({
llmChain: llmChain,
documentVariableName: 'context',
});

const result = await combineChain.call({
input_documents: combinedDocs,
question: userPrompt,
});

## 注意事项
- 留意OpenAI的token限制,如果固定文档过长,可能需要使用支持更长上下文的模型(如gpt-3.5-turbo-16k、gpt-4),或者对超长文档做必要的分割处理(但如果你需要完整文档,优先选长上下文模型)。
- 变量名尽量清晰,避免出现同名变量导致的逻辑混乱。

内容的提问来源于stack exchange,提问作者Ben Shekhtman
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:40:32