RagTool
描述
RagTool 旨在通过 CrewAI 的原生 RAG 系统利用检索增强生成(RAG)的强大功能来回答问题。它提供了一个动态知识库,可以查询该知识库以从各种数据源检索相关信息。此工具对于需要访问大量信息并需要提供上下文相关答案的应用程序特别有用。
示例
以下示例演示如何初始化该工具并将其与不同的数据源一起使用代码
支持的数据源
RagTool 可以与各种数据源一起使用,包括:
- 📰 PDF 文件
- 📊 CSV 文件
- 📃 JSON 文件
- 📝 文本
- 📁 目录/文件夹
- 🌐 HTML 网页
- 📽️ YouTube 频道
- 📺 YouTube 视频
- 📚 文档网站
- 📝 MDX 文件
- 📄 DOCX 文件
- 🧾 XML 文件
- 📬 Gmail
- 📝 GitHub 存储库
- 🐘 PostgreSQL 数据库
- 🐬 MySQL 数据库
- 🤖 Slack 对话
- 💬 Discord 消息
- 🗨️ Discourse 论坛
- 📝 Substack 时事通讯
- 🐝 Beehiiv 内容
- 💾 Dropbox 文件
- 🖼️ 图像
- ⚙️ 自定义数据源
参数
RagTool 接受以下参数:
- summarize:可选。是否对检索到的内容进行总结。默认为
False。 - adapter:可选。知识库的自定义适配器。如果未提供,将使用 CrewAIRagAdapter。
- config:可选。底层 CrewAI RAG 系统的配置。接受一个
RagToolConfigTypedDict,其中包含可选的embedding_model(ProviderSpec) 和vectordb(VectorDbConfig) 键。所有以编程方式提供的配置值优先于环境变量。
添加内容
您可以使用add 方法向知识库添加内容
代码
代理集成示例
以下是如何将RagTool 与 CrewAI 代理集成:
代码
高级配置
您可以通过提供配置字典来自定义RagTool 的行为
代码
嵌入模型配置
embedding_model 参数接受一个结构为 crewai.rag.embeddings.types.ProviderSpec 的字典
支持的提供商
OpenAI
OpenAI
main.py
api_key(str):OpenAI API 密钥model_name(str):要使用的模型。默认值:text-embedding-ada-002。选项:text-embedding-3-small、text-embedding-3-large、text-embedding-ada-002dimensions(int):嵌入的维度数organization_id(str):OpenAI 组织 IDapi_base(str):自定义 API 基本 URLapi_version(str):API 版本default_headers(dict):API 请求的自定义标头
OPENAI_API_KEY或EMBEDDINGS_OPENAI_API_KEY:api_keyOPENAI_ORGANIZATION_ID或EMBEDDINGS_OPENAI_ORGANIZATION_ID:organization_idOPENAI_MODEL_NAME或EMBEDDINGS_OPENAI_MODEL_NAME:model_nameOPENAI_API_BASE或EMBEDDINGS_OPENAI_API_BASE:api_baseOPENAI_API_VERSION或EMBEDDINGS_OPENAI_API_VERSION:api_versionOPENAI_DIMENSIONS或EMBEDDINGS_OPENAI_DIMENSIONS:dimensions
Cohere
Cohere
main.py
api_key(str):Cohere API 密钥model_name(str):要使用的模型。默认值:large。选项:embed-english-v3.0、embed-multilingual-v3.0、large、small
COHERE_API_KEY或EMBEDDINGS_COHERE_API_KEY:api_keyEMBEDDINGS_COHERE_MODEL_NAME:model_name
VoyageAI
VoyageAI
main.py
api_key(str):VoyageAI API 密钥model(str):要使用的模型。默认值:voyage-2。选项:voyage-3、voyage-3-lite、voyage-code-3、voyage-large-2input_type(str):输入类型。选项:document(用于存储)、query(用于搜索)truncation(bool):是否截断超过最大长度的输入。默认值:Trueoutput_dtype(str):输出数据类型output_dimension(int):输出嵌入的维度max_retries(int):最大重试次数。默认值:0timeout(float):请求超时(秒)
VOYAGEAI_API_KEY或EMBEDDINGS_VOYAGEAI_API_KEY:api_keyVOYAGEAI_MODEL或EMBEDDINGS_VOYAGEAI_MODEL:modelVOYAGEAI_INPUT_TYPE或EMBEDDINGS_VOYAGEAI_INPUT_TYPE:input_typeVOYAGEAI_TRUNCATION或EMBEDDINGS_VOYAGEAI_TRUNCATION:truncationVOYAGEAI_OUTPUT_DTYPE或EMBEDDINGS_VOYAGEAI_OUTPUT_DTYPE:output_dtypeVOYAGEAI_OUTPUT_DIMENSION或EMBEDDINGS_VOYAGEAI_OUTPUT_DIMENSION:output_dimensionVOYAGEAI_MAX_RETRIES或EMBEDDINGS_VOYAGEAI_MAX_RETRIES:max_retriesVOYAGEAI_TIMEOUT或EMBEDDINGS_VOYAGEAI_TIMEOUT:timeout
Ollama
Ollama
main.py
model_name(str):Ollama 模型名称(例如,llama2、mistral、nomic-embed-text)url(str):Ollama API 端点 URL。默认值:https://:11434/api/embeddings
OLLAMA_MODEL或EMBEDDINGS_OLLAMA_MODEL:model_nameOLLAMA_URL或EMBEDDINGS_OLLAMA_URL:url
Amazon Bedrock
Amazon Bedrock
main.py
model_name(str):Bedrock 模型 ID。默认值:amazon.titan-embed-text-v1。选项:amazon.titan-embed-text-v1、amazon.titan-embed-text-v2:0、cohere.embed-english-v3、cohere.embed-multilingual-v3session(Any):用于 AWS 身份验证的 Boto3 会话对象
AWS_ACCESS_KEY_ID:AWS 访问密钥AWS_SECRET_ACCESS_KEY:AWS 秘密密钥AWS_REGION:AWS 区域(例如,us-east-1)
Azure OpenAI
Azure OpenAI
main.py
deployment_id(str):必需 - Azure OpenAI 部署 IDapi_key(str):Azure OpenAI API 密钥api_base(str):Azure OpenAI 资源端点api_version(str):API 版本。示例:2024-02-01model_name(str):模型名称。默认值:text-embedding-ada-002api_type(str):API 类型。默认值:azuredimensions(int):输出维度default_headers(dict):自定义标头
AZURE_OPENAI_API_KEY或EMBEDDINGS_AZURE_API_KEY:api_keyAZURE_OPENAI_ENDPOINT或EMBEDDINGS_AZURE_API_BASE:api_baseEMBEDDINGS_AZURE_DEPLOYMENT_ID:deployment_idEMBEDDINGS_AZURE_API_VERSION:api_versionEMBEDDINGS_AZURE_MODEL_NAME:model_nameEMBEDDINGS_AZURE_API_TYPE:api_typeEMBEDDINGS_AZURE_DIMENSIONS:dimensions
Google Generative AI
Google Generative AI
main.py
api_key(str):Google AI API 密钥model_name(str):模型名称。默认值:gemini-embedding-001。选项:gemini-embedding-001、text-embedding-005、text-multilingual-embedding-002task_type(str):嵌入的任务类型。默认值:RETRIEVAL_DOCUMENT。选项:RETRIEVAL_DOCUMENT、RETRIEVAL_QUERY
GOOGLE_API_KEY、GEMINI_API_KEY或EMBEDDINGS_GOOGLE_API_KEY:api_keyEMBEDDINGS_GOOGLE_GENERATIVE_AI_MODEL_NAME:model_nameEMBEDDINGS_GOOGLE_GENERATIVE_AI_TASK_TYPE:task_type
Google Vertex AI
Google Vertex AI
main.py
model_name(str):模型名称。默认值:textembedding-gecko。选项:text-embedding-004、textembedding-gecko、textembedding-gecko-multilingualproject_id(str):Google Cloud 项目 ID。默认值:cloud-large-language-modelsregion(str):Google Cloud 区域。默认值:us-central1api_key(str):用于身份验证的 API 密钥
GOOGLE_APPLICATION_CREDENTIALS:服务帐户 JSON 文件的路径GOOGLE_CLOUD_PROJECT或EMBEDDINGS_GOOGLE_VERTEX_PROJECT_ID:project_idEMBEDDINGS_GOOGLE_VERTEX_MODEL_NAME:model_nameEMBEDDINGS_GOOGLE_VERTEX_REGION:regionEMBEDDINGS_GOOGLE_VERTEX_API_KEY:api_key
Jina AI
Jina AI
main.py
api_key(str):Jina AI API 密钥model_name(str):模型名称。默认值:jina-embeddings-v2-base-en。选项:jina-embeddings-v3、jina-embeddings-v2-base-en、jina-embeddings-v2-small-en
JINA_API_KEY或EMBEDDINGS_JINA_API_KEY:api_keyEMBEDDINGS_JINA_MODEL_NAME:model_name
HuggingFace
HuggingFace
main.py
url(str):HuggingFace 推理 API 端点的完整 URL
HUGGINGFACE_URL或EMBEDDINGS_HUGGINGFACE_URL:url
Instructor
Instructor
main.py
model_name(str):HuggingFace 模型 ID。默认值:hkunlp/instructor-base。选项:hkunlp/instructor-xl、hkunlp/instructor-large、hkunlp/instructor-basedevice(str):运行设备。默认值:cpu。选项:cpu、cuda、mpsinstruction(str):嵌入的指令前缀
EMBEDDINGS_INSTRUCTOR_MODEL_NAME:model_nameEMBEDDINGS_INSTRUCTOR_DEVICE:deviceEMBEDDINGS_INSTRUCTOR_INSTRUCTION:instruction
Sentence Transformer
Sentence Transformer
main.py
model_name(str):Sentence Transformers 模型名称。默认值:all-MiniLM-L6-v2。选项:all-mpnet-base-v2、all-MiniLM-L6-v2、paraphrase-multilingual-MiniLM-L12-v2device(str):运行设备。默认值:cpu。选项:cpu、cuda、mpsnormalize_embeddings(bool):是否规范化嵌入。默认值:False
EMBEDDINGS_SENTENCE_TRANSFORMER_MODEL_NAME:model_nameEMBEDDINGS_SENTENCE_TRANSFORMER_DEVICE:deviceEMBEDDINGS_SENTENCE_TRANSFORMER_NORMALIZE_EMBEDDINGS:normalize_embeddings
ONNX
ONNX
main.py
preferred_providers(list[str]):ONNX 执行提供程序的列表,按优先级排序
EMBEDDINGS_ONNX_PREFERRED_PROVIDERS:preferred_providers(逗号分隔列表)
OpenCLIP
OpenCLIP
main.py
model_name(str):OpenCLIP 模型架构。默认值:ViT-B-32。选项:ViT-B-32、ViT-B-16、ViT-L-14checkpoint(str):预训练检查点名称。默认值:laion2b_s34b_b79k。选项:laion2b_s34b_b79k、laion400m_e32、openaidevice(str):运行设备。默认值:cpu。选项:cpu、cuda
EMBEDDINGS_OPENCLIP_MODEL_NAME:model_nameEMBEDDINGS_OPENCLIP_CHECKPOINT:checkpointEMBEDDINGS_OPENCLIP_DEVICE:device
Text2Vec
Text2Vec
main.py
model_name(str):HuggingFace 中的 Text2Vec 模型名称。默认值:shibing624/text2vec-base-chinese。选项:shibing624/text2vec-base-multilingual、shibing624/text2vec-base-chinese
EMBEDDINGS_TEXT2VEC_MODEL_NAME:model_name
Roboflow
Roboflow
main.py
api_key(str):Roboflow API 密钥。默认值:""(空字符串)api_url(str):Roboflow 推理 API URL。默认值:https://infer.roboflow.com
ROBOFLOW_API_KEY或EMBEDDINGS_ROBOFLOW_API_KEY:api_keyROBOFLOW_API_URL或EMBEDDINGS_ROBOFLOW_API_URL:api_url
WatsonX (IBM)
WatsonX (IBM)
main.py
model_id(str):WatsonX 模型标识符url(str):WatsonX API 端点api_key(str):IBM Cloud API 密钥project_id(str):WatsonX 项目 IDspace_id(str):WatsonX 空间 ID(project_id 的替代方案)batch_size(int):嵌入的批处理大小。默认值:100concurrency_limit(int):最大并发请求数。默认值:10persistent_connection(bool):使用持久连接。默认值:True- 以及 20 多个额外的身份验证和配置选项
WATSONX_API_KEY或EMBEDDINGS_WATSONX_API_KEY:api_keyWATSONX_URL或EMBEDDINGS_WATSONX_URL:urlWATSONX_PROJECT_ID或EMBEDDINGS_WATSONX_PROJECT_ID:project_idEMBEDDINGS_WATSONX_MODEL_ID:model_idEMBEDDINGS_WATSONX_SPACE_ID:space_idEMBEDDINGS_WATSONX_BATCH_SIZE:batch_sizeEMBEDDINGS_WATSONX_CONCURRENCY_LIMIT:concurrency_limitEMBEDDINGS_WATSONX_PERSISTENT_CONNECTION:persistent_connection
自定义
自定义
main.py
embedding_callable(type[EmbeddingFunction]):自定义嵌入函数类
crewai.rag.core.base_embeddings_callable 中定义的 EmbeddingFunction 协议。__call__ 方法应接受输入数据并返回作为 numpy 数组列表(或兼容的将规范化的格式)的嵌入。返回的嵌入会自动规范化和验证。注意
- 所有配置字段都是可选的,除非标记为必需
- API 密钥通常可以通过环境变量而不是配置提供
- 适用时显示默认值
结论
RagTool 提供了一种强大的方式,可以从各种数据源创建和查询知识库。通过利用检索增强生成,它使代理能够有效地访问和检索相关信息,从而增强其提供准确和上下文适当响应的能力。