RagTool
설명
RagTool은 CrewAI의 네이티브 RAG 시스템을 통해 RAG(Retrieval-Augmented Generation)의 강력함을 활용하여 질문에 답하도록 설계되었습니다.
이는 다양한 데이터 소스에서 관련 정보를 검색할 수 있는 동적 지식 기반을 제공합니다.
이 도구는 방대한 정보에 접근해야 하고 맥락에 맞는 답변을 제공해야 하는 애플리케이션에 특히 유용합니다.
예시
다음 예시는 도구를 초기화하고 다양한 데이터 소스와 함께 사용하는 방법을 보여줍니다:Code
지원되는 데이터 소스
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 시스템에 대한 구성입니다. 선택적
embedding_model(ProviderSpec) 및vectordb(VectorDbConfig) 키를 포함하는RagToolConfigTypedDict를 허용합니다. 프로그래밍 방식으로 제공된 모든 구성 값은 환경 변수보다 우선합니다.
콘텐츠 추가
add 메서드를 사용하여 지식 베이스에 콘텐츠를 추가할 수 있습니다:
Code
에이전트 통합 예시
아래는RagTool을 CrewAI 에이전트와 통합하는 방법입니다:
Code
고급 구성
구성 딕셔너리를 제공하여RagTool의 동작을 사용자 지정할 수 있습니다.
Code
임베딩 모델 구성
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. 기본값:http://localhost: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,mps,xpuinstruction(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,mps,xpunormalize_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,mps,xpu
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은 다양한 데이터 소스에서 지식 베이스를 생성하고 질의할 수 있는 강력한 방법을 제공합니다. Retrieval-Augmented Generation을 활용하여, 에이전트가 관련 정보를 효율적으로 접근하고 검색할 수 있게 하여, 보다 정확하고 상황에 맞는 응답을 제공하는 능력을 향상시킵니다.