PDF RAG 搜索
PDFSearchTool
Section titled “PDFSearchTool”PDFSearchTool 是一个 RAG 工具,旨在对 PDF 内容进行语义搜索。它允许输入搜索查询和 PDF 文档,并利用高级搜索技术高效查找相关内容。
这项能力使它特别适合快速从大型 PDF 文件中提取特定信息。
要开始使用 PDFSearchTool,首先请确保已使用以下命令安装 crewai_tools 包:
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方法参数中提供。如果在初始化时提供,工具会将搜索限制在指定文档中。
自定义模型与嵌入
Section titled “自定义模型与嵌入”默认情况下,该工具使用 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。
如果你希望允许工作目录之外的路径(例如在测试或受信任的流水线中),请设置环境变量:
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=trueURL 验证
Section titled “URL 验证”URL 输入会经过验证:file:// URI 以及指向私有或保留 IP 范围的请求会被阻止,以防止服务器端请求伪造(SSRF)攻击。