跳到主要内容
本指南介绍如何将 SearchApi 与 LangChain 结合使用以加载网络搜索结果。

概览

SearchApi 是一个实时 API,允许开发者访问来自各种搜索引擎的结果,包括 Google 搜索Google 新闻Google 学术YouTube 字幕 或文档中可找到的任何其他引擎。此 API 使开发者和企业能够直接从所有这些搜索引擎的结果页面抓取和提取有意义的数据,为不同的用例提供有价值的洞察。 本指南介绍如何使用 LangChain 中的 SearchApiLoader 加载网络搜索结果。SearchApiLoader 简化了从 SearchApi 加载和处理网络搜索结果的过程。

设置

您需要注册并获取您的 SearchApi API 密钥

用法

以下是如何使用 SearchApiLoader 的示例:
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";
import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";
import { TokenTextSplitter } from "@langchain/textsplitters";
import { SearchApiLoader } from "@langchain/community/document_loaders/web/searchapi";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { createStuffDocumentsChain } from "@langchain/classic/chains/combine_documents";
import { createRetrievalChain } from "@langchain/classic/chains/retrieval";

// Initialize the necessary components
const llm = new ChatOpenAI({
  model: "gpt-3.5-turbo-1106",
});
const embeddings = new OpenAIEmbeddings();
const apiKey = "Your SearchApi API key";

// Define your question and query
const question = "Your question here";
const query = "Your query here";

// Use SearchApiLoader to load web search results
const loader = new SearchApiLoader({ q: query, apiKey, engine: "google" });
const docs = await loader.load();

const textSplitter = new TokenTextSplitter({
  chunkSize: 800,
  chunkOverlap: 100,
});

const splitDocs = await textSplitter.splitDocuments(docs);

// Use MemoryVectorStore to store the loaded documents in memory
const vectorStore = await MemoryVectorStore.fromDocuments(
  splitDocs,
  embeddings
);

const questionAnsweringPrompt = ChatPromptTemplate.fromMessages([
  [
    "system",
    "Answer the user's questions based on the below context:\n\n{context}",
  ],
  ["human", "{input}"],
]);

const combineDocsChain = await createStuffDocumentsChain({
  llm,
  prompt: questionAnsweringPrompt,
});

const chain = await createRetrievalChain({
  retriever: vectorStore.asRetriever(),
  combineDocsChain,
});

const res = await chain.invoke({
  input: question,
});

console.log(res.answer);
在此示例中,SearchApiLoader 用于加载网络搜索结果,然后使用 MemoryVectorStore 将其存储在内存中。然后使用检索链从内存中检索最相关的文档,并根据这些文档回答问题。这演示了 SearchApiLoader 如何简化加载和处理网络搜索结果的过程。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.