跳转到内容

PDF RAG 搜索

PDFSearchTool 是一个 RAG 工具,旨在对 PDF 内容进行语义搜索。它允许输入搜索查询和 PDF 文档,并利用高级搜索技术高效查找相关内容。
这项能力使它特别适合快速从大型 PDF 文件中提取特定信息。

要开始使用 PDFSearchTool,首先请确保已使用以下命令安装 crewai_tools 包:

Terminal window
pip install 'crewai[tools]'

下面演示如何使用 PDFSearchTool 在 PDF 文档中进行搜索:

from crewai_tools import PDFSearchTool
# 初始化工具,若在执行过程中提供路径,则可搜索任意 PDF 内容
tool = PDFSearchTool()
# 或者
# 使用特定 PDF 路径初始化工具,
# 以便仅在该文档内进行专属搜索
tool = PDFSearchTool(pdf='path/to/your/document.pdf')
  • pdf可选 PDF 搜索路径。可在初始化时或 run 方法参数中提供。如果在初始化时提供,工具会将搜索限制在指定文档中。

默认情况下,该工具使用 OpenAI 进行嵌入和摘要。你可以按如下方式使用配置字典来自定义模型。注意:由于生成的嵌入必须存储并从 vectordb 中查询,因此需要一个向量数据库。

from crewai_tools import PDFSearchTool
# - embedding_model(必需):选择提供方 + 提供方特定配置
# - vectordb(必需):选择向量数据库并传入其配置
tool = PDFSearchTool(
config={
"embedding_model": {
# 支持的提供方:"openai"、"azure"、"google-generativeai"、"google-vertex",
# "voyageai"、"cohere"、"huggingface"、"jina"、"sentence-transformer",
# "text2vec"、"ollama"、"openclip"、"instructor"、"onnx"、"roboflow"、"watsonx"、"custom"
"provider": "openai", # 或:"google-generativeai"、"cohere"、"ollama" 等
"config": {
# 所选提供方的模型标识符。内部会自动将 "model" 映射为 "model_name"。
"model": "text-embedding-3-small",
# 可选:API key。如果省略,工具会使用提供方对应的环境变量
# (例如 OpenAI 的 OPENAI_API_KEY 或 EMBEDDINGS_OPENAI_API_KEY)。
# "api_key": "sk-...",
# 提供方示例:
# --- Google Generative AI ---
# (上方设置 provider="google-generativeai")
# "model_name": "gemini-embedding-001",
# "task_type": "RETRIEVAL_DOCUMENT",
# "title": "Embeddings",
# --- Cohere ---
# (上方设置 provider="cohere")
# "model": "embed-english-v3.0",
# --- Ollama(本地)---
# (上方设置 provider="ollama")
# "model": "nomic-embed-text",
},
},
"vectordb": {
"provider": "chromadb", # 或 "qdrant"
"config": {
# 对于 ChromaDB:传入 "settings"(chromadb.config.Settings)或使用默认值。
# 示例(取消注释并导入):
# from chromadb.config import Settings
# "settings": Settings(
# persist_directory="/content/chroma",
# allow_reset=True,
# is_persistent=True,
# ),
# 对于 Qdrant:传入 "vectors_config"(qdrant_client.models.VectorParams)。
# 示例(取消注释并导入):
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
# 注意:collection 名称由工具控制(默认:"rag_tool_collection"),不在这里设置。
}
},
}
)

传入该工具的文件路径会根据当前工作目录进行验证。解析后位于工作目录之外的路径会被拒绝并抛出 ValueError

如果你希望允许工作目录之外的路径(例如在测试或受信任的流水线中),请设置环境变量:

Terminal window
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true

URL 输入会经过验证:file:// URI 以及指向私有或保留 IP 范围的请求会被阻止,以防止服务器端请求伪造(SSRF)攻击。