CrewAI에서의 지식(Knowledge)이란 무엇인지, 그리고 어떻게 사용하는지 알아봅니다.
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
sources | List[BaseKnowledgeSource] | 예 | 저장되고 쿼리될 콘텐츠를 제공하는 지식 소스 목록. PDF, CSV, Excel, JSON, 텍스트 파일 또는 문자열 콘텐츠를 포함할 수 있다. |
collection_name | str | 아니오 | 지식이 저장될 컬렉션의 이름. 서로 다른 지식 집합을 식별하는 데 사용된다. 제공되지 않으면 기본값으로 “knowledge”가 사용된다. |
storage | Optional[KnowledgeStorage] | 아니오 | 지식이 저장되고 검색되는 방식을 관리하는 커스텀 스토리지 설정. 제공되지 않으면 기본 스토리지가 생성된다. |
knowledge
디렉토리를 만들고, 파일을 해당 디렉토리에 배치한다.
또한, 소스를 생성할 때 knowledge
디렉토리를 기준으로 상대 경로를 사용한다.CrewDoclingSource
를 사용한 예제다. CrewDoclingSource
는 MD, PDF, DOCX, HTML 등 다양한 파일 포맷을 처리할 수 있다.
docling
을 설치해야 한다: uv add docling
embedder
파라미터는 다양한 임베딩 모델 프로바이더를 지원한다:
openai
: OpenAI의 임베딩 모델google
: Google의 텍스트 임베딩 모델azure
: Azure OpenAI 임베딩ollama
: Ollama를 사용한 로컬 임베딩vertexai
: Google Cloud VertexAI 임베딩cohere
: Cohere의 임베딩 모델voyageai
: VoyageAI의 임베딩 모델bedrock
: AWS Bedrock 임베딩huggingface
: Hugging Face 모델watson
: IBM Watson 임베딩text-embedding-004
모델을 사용해 지식 저장소의 임베딩을 설정하는 예제는 다음과 같다:
crewai reset-memories
커맨드에 --knowledge
옵션을 사용한다.
crew.knowledge_sources
를 사용해 크루 전체에 지식을 제공할 수 있지만, 개별 에이전트도 knowledge_sources
매개변수를 통해 자신만의 지식 소스를 가질 수 있다.
BaseKnowledgeSource
클래스를 확장하여 다양한 타입의 데이터에 대한 커스텀 지식 소스를 생성할 수 있다. 여기서는 우주 뉴스 기사를 가져와 처리하는 실제 예제를 만들어 보자.
SpaceNewsKnowledgeSource
):
BaseKnowledgeSource
를 상속받는다.load_content()
: API에서 기사를 가져온다._format_articles()
: 기사를 읽기 쉬운 텍스트로 구조화한다.add()
: 콘텐츠를 처리하고 저장한다.{user_question}
을 통해 사용자 질문을 입력받는다.콘텐츠 조직화
성능 최적화 팁