SearchApi 加载器
本指南展示了如何在 LangChain 中使用 SearchApi 加载网页搜索结果。
概览
SearchApi 是一个实时 API,为开发者提供多种搜索引擎的结果访问能力,包括 Google 搜索、 Google 新闻、Google 学术、YouTube 字幕 等,具体可在文档中查看支持的引擎列表。 该 API 使开发者和企业能够直接从这些搜索引擎的结果页面中抓取和提取有意义的数据,为各种用例提供有价值的洞察。
本指南展示了如何在 LangChain 中使用 SearchApiLoader 加载网页搜索结果。SearchApiLoader 简化了从 SearchApi 获取和处理网页搜索结果的过程。
准备工作
你需要注册并获取你的 SearchApi API 密钥。
使用方法
以下是如何使用 SearchApiLoader 的示例:
:::提示 请参阅安装集成包的一般说明部分。 :::
- npm
- Yarn
- pnpm
npm install @langchain/community @langchain/core @langchain/openai
yarn add @langchain/community @langchain/core @langchain/openai
pnpm add @langchain/community @langchain/core @langchain/openai
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";
import { MemoryVectorStore } from "langchain/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/chains/combine_documents";
import { createRetrievalChain } from "langchain/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);
API Reference:
- ChatOpenAI from
@langchain/openai - OpenAIEmbeddings from
@langchain/openai - MemoryVectorStore from
langchain/vectorstores/memory - TokenTextSplitter from
@langchain/textsplitters - SearchApiLoader from
@langchain/community/document_loaders/web/searchapi - ChatPromptTemplate from
@langchain/core/prompts - createStuffDocumentsChain from
langchain/chains/combine_documents - createRetrievalChain from
langchain/chains/retrieval
在此示例中,SearchApiLoader 用于加载网页搜索结果,并使用 MemoryVectorStore 将结果存储在内存中。然后使用一个检索链从内存中检索最相关的文档,并基于这些文档回答问题。这展示了 SearchApiLoader 如何简化加载和处理网页搜索结果的过程。