SearchApi 加载器
本指南展示了如何将 SearchApi 与 LangChain 一起使用来加载网络搜索结果。
概述
SearchApi 是一个实时 API,它允许开发人员访问来自各种搜索引擎的结果,包括 谷歌搜索、谷歌新闻、谷歌学术搜索、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 参考
- ChatOpenAI 来自
@langchain/openai
- OpenAIEmbeddings 来自
@langchain/openai
- MemoryVectorStore 来自
langchain/vectorstores/memory
- TokenTextSplitter 来自
@langchain/textsplitters
- SearchApiLoader 来自
@langchain/community/document_loaders/web/searchapi
- ChatPromptTemplate 来自
@langchain/core/prompts
- createStuffDocumentsChain 来自
langchain/chains/combine_documents
- createRetrievalChain 来自
langchain/chains/retrieval
在此示例中,SearchApiLoader
用于加载网络搜索结果,这些结果随后使用 MemoryVectorStore
存储在内存中。然后使用检索链从内存中检索最相关的文档,并根据这些文档回答问题。这演示了 SearchApiLoader
如何简化加载和处理网络搜索结果的过程。