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

TypeScript中LangChain调用Pinecone后实现响应流式输出方案咨询

实现LangChain + Pinecone的流式响应输出

原代码中的VectorDBQAChain通过call()方法一次性返回完整结果,要实现流式输出到控制台,需要调整LLM配置并改用支持流式的链结构,具体方案如下:

关键调整点

  • 开启OpenAI模型的流式返回模式,设置回调函数实时输出token
  • 使用RetrievalQA链替代VectorDBQAChain,该链支持配合流式LLM输出

修改后的完整代码

import { PineconeClient } from "@pinecone-database/pinecone";
import { RetrievalQAChain } from "langchain/chains";
import { PineconeStore } from "langchain/vectorstores/pinecone";
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
import { OpenAI } from "langchain/llms/openai";

const embeddings = new OpenAIEmbeddings({
    openAIApiKey: process.env.OPENAI_API_KEY,
});

const pinecone = new PineconeClient();

// 配置支持流式的OpenAI实例
const model = new OpenAI({
    openAIApiKey: process.env.OPENAI_API_KEY,
    streaming: true, // 开启流式返回
    onToken: (token) => process.stdout.write(token), // 实时输出每个token到控制台
});

async function main(namespaceID: string) {
    await pinecone.init({
        apiKey: process.env.PINECONE_API_KEY,
        environment: "us-west4-gcp-free",
    });

    const pineconeIndex = pinecone.Index("index-test");

    const vectorStore = await PineconeStore.fromExistingIndex(
        embeddings,
        { pineconeIndex }
    );
    vectorStore.namespace = namespaceID;

    // 创建RetrievalQA链,替代原VectorDBQAChain
    const chain = RetrievalQAChain.fromLLM(model, vectorStore.asRetriever(5), {
        returnSourceDocuments: true,
        verbose: true,
    });

    // 调用stream方法获取流式响应
    const stream = await chain.stream({ query: "What is the status of Project X" });
    
    // 处理流结束后的逻辑(可选)
    stream.on("end", () => {
        console.log("\n--- 响应结束 ---");
        // 若需要获取源文档,可通过chain.call()单独获取,因为stream方法默认不返回源文档
        // 若同时需要流式输出和源文档,可先调用chain.call()获取源文档,再调用stream输出内容
    });
}

main("TEST_NAMESPACE");

补充说明

  1. 若需要同时获取流式响应和源文档,可以分两步:先调用chain.call()获取源文档,再调用stream()输出内容,因为stream()方法默认只返回生成的文本流。
  2. process.stdout.write(token)会在控制台实时拼接输出每个token,避免console.log()带来的换行问题。

内容的提问来源于stack exchange,提问作者Kancha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:05:10