动态少样本学习:Text2Sql Agent
动态少样本学习:Text2Sql Agent
示例:如果我们正在构建一个 Text2Sql Agent,我们需要提供表模式、列名、数据类型、示例查询以及常见的“陷阱”来帮助它生成最佳 SQL 查询。我们显然不会将所有这些都放在系统提示中,而是将这些信息存储在向量数据库中,并在运行时让 Agent 查询它。利用这些信息,Agent 可以生成最佳 SQL 查询。这就是所谓的动态少样本学习。
knowledge
添加到 Agent 中,它将在运行时搜索该知识库,以获取完成任务所需的特定信息。
将知识添加到 Agent 的伪步骤如下:
- 我们可以设置
search_knowledge=True
来向 Agent 添加一个search_knowledge_base()
工具。如果将knowledge
添加到 Agent 中,search_knowledge
默认为True
。 - 我们可以设置
add_references=True
来自动将知识库中的引用添加到 Agent 的提示中。这是传统的 2023 RAG 方法。
如果您需要完全控制知识库搜索,可以传递一个具有以下签名的自定义 该函数在
retriever
函数:search_knowledge_base()
调用期间被调用,并用于 Agent 从知识库检索引用。
有关更多详细信息,请参阅 Custom Retriever 页面。向量数据库
虽然任何类型的存储都可以作为知识库,但向量数据库为从密集信息中快速检索相关结果提供了最佳解决方案。以下是向量数据库如何与 Agents 一起使用:1
分块信息
将知识分解成更小的块,以确保我们的搜索查询
仅返回相关结果。
2
加载知识库
将块转换为嵌入向量,并将其存储在向量数据库中。
3
搜索知识库
当用户发送消息时,我们将输入消息转换为嵌入,并在向量数据库中“搜索”最近邻居。
加载知识库
在使用知识库之前,需要用将用于检索的嵌入来加载它。异步加载
许多向量数据库支持异步操作,这可以在加载大型知识库时显著提高性能。您可以使用aload()
方法来利用此功能:
aload()
可以确保您充分利用非阻塞操作、并发处理以及异步向量数据库操作提供的较低延迟。这在吞吐量要求高的生产环境中尤其有价值。
有关向量数据库异步功能的更多详细信息,请参阅 Vector Database Introduction。
使用以下知识库之一来简化分块、加载、搜索和优化过程:
- ArXiv 知识库: 将 ArXiv 论文加载到知识库
- 组合知识库: 将多个知识库合并为一个
- CSV 知识库: 加载本地 CSV 文件到知识库
- CSV URL 知识库: 从 URL 加载 CSV 文件到知识库
- 文档知识库: 加载本地 docx 文件到知识库
- JSON 知识库: 加载 JSON 文件到知识库
- LangChain 知识库: 将 Langchain retriever 用作知识库
- PDF 知识库: 加载本地 PDF 文件到知识库
- PDF URL 知识库: 从 URL 加载 PDF 文件到知识库
- S3 PDF 知识库: 从 S3 加载 PDF 文件到知识库
- S3 Text 知识库: 从 S3 加载文本文件到知识库
- Text 知识库: 加载文本/docx 文件到知识库
- 网站知识库: 加载网站数据到知识库
- Wikipedia 知识库: 加载维基百科文章到知识库