Knowledge
CrewAI에서의 지식(Knowledge)이란 무엇인지, 그리고 어떻게 사용하는지 알아봅니다.
지식이란 무엇인가?
CrewAI에서 지식은 AI 에이전트가 작업을 수행하는 동안 외부 정보 소스에 접근하고 활용할 수 있게 해주는 강력한 시스템이다. 여러분의 에이전트에게 작업 중 참고할 수 있는 도서관을 제공한다고 생각하면 된다.
지식을 사용할 때의 주요 이점:
- 도메인별 정보로 에이전트의 능력을 강화
- 실제 데이터를 기반으로 의사결정 지원
- 대화 간 컨텍스트 유지
- 사실에 기반한 응답 제공
지원되는 지식 소스
CrewAI는 다양한 유형의 지식 소스를 기본적으로 지원한다:
텍스트 소스
- 원시 문자열
- 텍스트 파일 (.txt)
- PDF 문서
구조화된 데이터
- CSV 파일
- Excel 스프레드시트
- JSON 문서
지원되는 지식 파라미터
파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
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
다양한 예제
다양한 지식 소스를 활용하는 방법에 대한 예제를 소개한다:
텍스트 파일 지식 소스
PDF 지식 소스
CSV 지식 소스
엑셀 지식 소스
JSON 지식 소스
지식 구성
청킹 설정
지식 소스는 더 나은 처리를 위해 콘텐츠를 자동으로 청크로 나눈다. 지식 소스에서 청킹 동작을 다음과 같이 설정할 수 있다:
청킹 설정은 다음에 도움을 준다:
- 대규모 문서를 관리 가능한 크기로 분할
- 청크 간 겹치는 부분을 통해 컨텍스트 유지
- 검색 정확도 최적화
임베딩 설정
지식 저장소를 위한 임베딩 설정도 가능하다. 에이전트와는 다른 임베딩 모델을 지식 저장소에 사용하고 싶을 때 유용하다. 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 임베딩
Google의 text-embedding-004
모델을 사용해 지식 저장소의 임베딩을 설정하는 예제는 다음과 같다:
지식 초기화
CrewAI에 저장된 지식을 초기화해야 한다면 crewai reset-memories
커맨드에 --knowledge
옵션을 사용한다.
이 명령은 지식 소스를 업데이트한 후 에이전트가 최신 정보를 사용하도록 보장할 때 유용하다.
에이전트별 지식
crew.knowledge_sources
를 사용해 크루 전체에 지식을 제공할 수 있지만, 개별 에이전트도 knowledge_sources
매개변수를 통해 자신만의 지식 소스를 가질 수 있다.
에이전트별 지식의 장점:
- 에이전트에게 역할에 맞는 특화된 정보 제공
- 에이전트 간 관심사 분리 유지
- 크루 레벨 지식과 결합해 계층적 정보 접근 가능
커스텀 지식 소스 생성
CrewAI는 BaseKnowledgeSource
클래스를 확장하여 다양한 타입의 데이터에 대한 커스텀 지식 소스를 생성할 수 있다. 여기서는 우주 뉴스 기사를 가져와 처리하는 실제 예제를 만들어 보자.
우주 뉴스 지식 소스 예제
주요 컴포넌트 설명
-
커스텀 지식 소스 (
SpaceNewsKnowledgeSource
):- CrewAI와의 통합을 위해
BaseKnowledgeSource
를 상속받는다. - 구성 가능한 API 엔드포인트와 기사 제한 수를 설정한다.
- 세 가지 주요 메서드를 구현한다:
load_content()
: API에서 기사를 가져온다._format_articles()
: 기사를 읽기 쉬운 텍스트로 구조화한다.add()
: 콘텐츠를 처리하고 저장한다.
- CrewAI와의 통합을 위해
-
에이전트 구성:
- Space News Analyst라는 특화된 역할을 가진다.
- 지식 소스를 활용해 우주 뉴스에 접근한다.
-
태스크 설정:
{user_question}
을 통해 사용자 질문을 입력받는다.- 지식 소스를 기반으로 상세한 답변을 제공하도록 설계된다.
-
Crew 오케스트레이션:
- 에이전트와 태스크 간의 워크플로를 관리한다.
- kickoff 메서드를 통해 입력과 출력을 처리한다.
이 예제는 다음과 같은 방법을 보여준다:
- 실시간 데이터를 가져오는 커스텀 지식 소스를 만든다.
- 외부 데이터를 AI가 사용할 수 있도록 처리하고 구조화한다.
- 지식 소스를 사용해 특정 사용자 질문에 답변한다.
- 모든 것을 CrewAI의 에이전트 시스템과 원활하게 통합한다.
Spaceflight News API 소개
이 예제는 Spaceflight News API를 사용한다. 이 API는 다음과 같은 특징을 가진다:
- 우주 관련 뉴스 기사에 무료로 접근할 수 있다
- 인증이 필요하지 않다
- 우주 뉴스에 대한 구조화된 데이터를 반환한다
- 페이징과 필터링을 지원한다
API 쿼리는 엔드포인트 URL을 수정하여 커스터마이징할 수 있다: