跳转到内容

目录 RAG 搜索

DirectorySearchTool 允许在指定目录的内容中进行语义搜索,利用检索增强生成(RAG)方法高效浏览文件。它具有很强的灵活性,既可以在运行时动态指定搜索目录,也可以在初始设置时固定目录。

要使用 DirectorySearchTool,请先安装 crewai_tools 包。在终端中执行以下命令:

Terminal window
pip install 'crewai[tools]'

crewai_tools 包中导入 DirectorySearchTool 即可开始使用。你可以不指定目录来初始化工具,这样就能在运行时设置搜索目录;也可以使用预定义目录进行初始化。

from crewai_tools import DirectorySearchTool
# 用于在运行时动态指定目录
tool = DirectorySearchTool()
# 用于固定目录搜索
tool = DirectorySearchTool(directory='/path/to/directory')
  • directory:指定搜索目录的字符串参数。初始化时可选,但如果一开始没有设置,则在搜索时必须提供。

默认情况下,DirectorySearchTool 使用 OpenAI 进行嵌入和摘要。你可以通过以下方式自定义这些设置,包括更改模型提供方和配置,以便高级用户获得更高的灵活性。

from chromadb.config import Settings
tool = DirectorySearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # 或 "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)

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

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

Terminal window
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true