Docs Menu
Docs Home
/
Atlas
/ /

MongoDB로 AI 에이전트 구축

MongoDB AI 에이전트 구축을 위한 몇 가지 기능을 제공합니다. 벡터 및 문서 데이터베이스 인 MongoDB 에이전트 RAG에 대한 다양한 검색 방법을 지원하며, 장단기 에이전트 메모리를 위해 에이전트 상호 작용을 동일한 데이터베이스 에 저장합니다.

시작하기

생성형 AI의 맥락에서 AI 에이전트는 일반적으로 LLM과 같은 AI 모델을 사전 정의된 도구 세트와 결합하여 작업을 자율적 또는 반자율적으로 수행할 수 있는 시스템을 의미합니다.

AI 에이전트는 도구를 사용하여 문맥을 수집하고, 외부 시스템과 상호 작용하며, 조치를 수행할 수 있습니다. 그들은 자신의 실행 흐름(계획)을 정의할 수 있으며, 이전 상호작용을 기억하여 응답을 결정하는 데 활용합니다(기억). 따라서 AI 에이전트는 추론, 계획 및 의사 결정이 필요한 복잡한 작업에 가장 적합합니다.

MongoDB 사용한 단일 에이전트 아키텍처를 보여주는 다이어그램
클릭하여 확대

AI 에이전트는 일반적으로 다음 구성 요소의 조합을 포함합니다.

인식

에이전트에 대한 입력값입니다. 텍스트 입력은 AI 에이전트의 가장 일반적인 인식 메커니즘이지만, 입력은 오디오, 이미지 또는 멀티모달 데이터일 수도 있습니다.

계획

에이전트가 다음에 할 일을 결정하는 방법 이 구성 요소는 일반적으로 LLM과 프롬프트를 포함하며, 피드백 루프와 다양한 프롬프트 엔지니어링 기법(예: 사고 연쇄, reAct)을 활용해 LLM이 복잡한 과제를 논리적으로 해결하도록 돕습니다.

AI 에이전트는 단일 LLM을 의사 결정자로, 여러 프롬프트를 가진 LLM, 여러 LLM이 함께 작동하는 경우 또는 이러한 접근 방식의 조합으로 구성될 수 있습니다.

도구

에이전트가 작업의 컨텍스트를 수집하는 방법. 도구는 에이전트가 외부 시스템과 상호 작용하며 벡터 검색, 웹 검색 또는 다른 서비스의 API 호출과 같은 조치를 수행할 수 있게 합니다.

메모리

에이전트 상호작용을 저장하는 시스템으로, 에이전트가 과거 경험을 통해 학습하여 응답을 개선할 수 있도록 합니다. 기억은 단기(현재 세션 동안) 또는 장기(세션 간에 지속됨)일 수 있습니다.

참고

AI 에이전트는 설계 패턴, 기능 및 복잡성이 다양합니다. 다중 에이전트 시스템을 포함한 다른 에이전트 아키텍처에 대해 알아보려면 에이전트 설계 패턴을 참조하세요.

MongoDB AI 에이전트 빌드를 위해 다음과 같은 구성 요소를 지원합니다.

  • 도구: MongoDB 검색 기능을 에이전트가 관련 정보를 조회하고 에이전트 RAG를 구현하는 도구로 활용하세요.

  • 메모리: 에이전트 상호 작용을 단기 및 장기 메모리를 위해 MongoDB 컬렉션에 저장합니다.

표준 MongoDB 쿼리 외에도 MongoDB 에이전트 용 도구로 구현 수 있는 여러 검색 기능을 제공합니다.

  • MongoDB 벡터 검색: 벡터 검색 수행하여 시맨틱 의미와 유사성을 기반으로 관련 컨텍스트를 조회 . 자세한 학습 은 MongoDB 벡터 검색 개요를 참조하세요.

  • MongoDB Search: 전체 텍스트 검색 수행하여 키워드 일치 및 관련성 점수를 기반으로 관련 컨텍스트를 조회 . 자세한 학습 은 MongoDB 검색 개요를 참조하세요.

  • 하이브리드 검색: MongoDB Vector Search와 MongoDB Search를 결합하여 두 접근 방식의 장점을 모두 활용합니다. 자세한 학습은 하이브리드 검색 수행 방법을 참조하세요.

LangChain 및 LangGraph와 같은 프레임워크를 사용하거나 도구를 수동으로 정의할 수 있습니다. 이러한 프레임워크는 도구 생성 및 호출을 위한 내장 추상화를 제공합니다.

도구는 에이전트가 특정 작업을 수행하기 위해 호출할 수 있는 함수로 정의됩니다. 예를 들어, 다음 구문은 벡터 검색 쿼리를 실행하는 도구를 정의하는 방법을 설명합니다.

async function vectorSearchTool(query) {
const pipeline = [
{
$vectorSearch: {
// Vector search query pipeline...
}
}
];
const results = await collection.aggregate(pipeline).toArray();
return results;
}
def vector_search_tool(query: str) -> str:
pipeline = [
{
"$vectorSearch": {
# Vector search query pipeline...
}
}
]
results = collection.aggregate(pipeline)
array_of_results = []
for doc in results:
array_of_results.append(doc)
return array_of_results

도구 호출은 에이전트 도구를 실행하는 데 사용합니다. 에이전트 에서 도구 호출을 프로세스 방법을 정의하거나 프레임워크 사용하여 이를 처리하다 있습니다. 이는 일반적으로 도구에 전달할 도구 이름 및 기타 인수를 포함하는 JSON 객체로 정의되므로 에이전트 적절한 매개변수를 사용하여 도구를 호출할 수 있습니다. 예시 를 들어 다음 구문은 에이전트 벡터 검색 도구를 호출하는 방법을 보여줍니다.

{
"tool": "vector_search_tool",
"args": { "query": "What is MongoDB?" },
"id": "call_H5TttXb423JfoulF1qVfPN3m"
}

MongoDB 벡터 데이터베이스 로 사용하면 AI 에이전트 통해 검색 및 생성 프로세스 동적으로 조정할 수 있는 고급 형태의 RAG 인 에이전트틱 RAG를 구현 검색 도구를 만들 수 있습니다.

MongoDB 사용한 에이전트적 RAG 아키텍처를 보여주는 다이어그램
클릭하여 확대

이 접근 방식을 사용하면 더 복잡한 워크플로와 사용자 상호 작용이 가능합니다. 예시 시맨틱 검색 에는 MongoDB Vector Search, 전체 텍스트 검색 에는 MongoDB Search를 사용하는 등 작업 에 따라 최적의 검색 도구를 결정하도록 AI 에이전트 구성할 수 있습니다. 또한 컬렉션별로 다양한 검색 도구를 정의하여 에이전트의 검색 기능을 추가로 사용자 지정할 수 있습니다.

MongoDB 는 문서 데이터베이스 이기도 하므로 에이전트의 상호 작용을 MongoDB 컬렉션 에 저장하여 에이전트에 대한 메모리를 구현 수 있습니다. 그런 다음 에이전트 필요에 따라 이 컬렉션 쿼리 하거나 업데이트 수 있습니다. MongoDB 로 에이전트 메모리를 구현 방법에는 여러 가지가 있습니다.

  • 단기 기억의 경우 session_id 필드 포함하여 상호 작용을 저장할 때 특정 세션을 식별한 다음 동일한 ID 로 상호 작용을 쿼리 에이전트 에 컨텍스트로 전달할 수 있습니다.

  • 장기 기억을 위해, LLM과의 여러 상호작용을 처리하여 사용자 선호도나 중요한 맥락과 같은 관련 정보를 추출한 후, 에이전트가 필요할 때 쿼리할 수 있도록 이 정보를 별도의 컬렉션에 저장합니다.

  • 대화 기록을 보다 효율적이고 복잡하게 조회 활성화 강력한 메모리 관리 시스템을 빌드 하려면 MongoDB Search 또는 MongoDB Vector Search 를 활용하여 세션 전반에서 중요한 상호 작용을 저장, 인덱스, 쿼리 .

단기 텀을 저장하는 컬렉션의 문서는 다음과 비슷할 수 있습니다.

{
"session_id": "123",
"user_id": "jane_doe",
"interactions":
[
{
"role": "user",
"content": "What is MongoDB?",
"timestamp": "2025-01-01T12:00:00Z"
},
{
"role": "assistant",
"content": "MongoDB is the world's leading modern database.",
"timestamp": "2025-01-01T12:00:05Z"
}
]
}

장기 기억을 저장하는 이 문서 컬렉션은 다음과 비슷합니다.

{
"user_id": "jane_doe",
"last_updated": "2025-05-22T09:15:00Z",
"preferences": {
"conversation_tone": "casual",
"custom_instructions": [
"I prefer concise answers."
],
},
"facts": [
{
"interests": ["AI", "MongoDB"],
}
]
}

다음 프레임워크는 MongoDB와 함께 에이전트 메모리에 대한 직접적인 추상화를 제공합니다.

프레임워크
기능

LangChain

  • MongoDBChatMessageHistory: 채팅 메시지 기록 구성 요소

  • MongoDBAtlasSemanticCache: 시맨틱 캐시 구성 요소

자세한 내용을 보려면 튜토리얼을 참조하세요.

LangGraph

  • MongoDBSaver: 지속성에 사용할 수 있는 단기 기억 체크포인터

  • MongoDBStore: MongoDB 에 메모리를 저장하기 위한 장기 문서 저장 ( Python 통합에서만 사용 가능)

자세한 내용을 보려면 LangGraphLangGraph.js를 참조하세요.

다음 튜토리얼에서는 에이전트 프레임워크 없이 에이전트 RAG 및 메모리용 MongoDB 사용하여 AI 에이전트 빌드 방법을 보여줍니다.


언어 선택 드롭다운 메뉴를 사용하여 이 튜토리얼의 언어 설정하다.


이 튜토리얼의 실행 가능한 버전을 Python 노트북으로 사용합니다.

이 튜토리얼을 완료하려면 다음 조건을 충족해야 합니다.

참고

이 튜토리얼에서는 Voyage AI 및 OpenAI의 모델을 사용하지만, 원하는 모델을 사용하도록 코드를 수정할 수 있습니다.

이 AI 에이전트는 사용자 정의 데이터 소스에 대한 질문에 AI 답변하고 계산을 수행할 수 있습니다. 또한 이전 상호작용을 기억하여 응답에 반영할 수 있습니다. 다음 구성 요소를 사용합니다.

  • 인식: 텍스트 입력.

  • 계획: 작업을 추론하기 위한 LLM 및 다양한 프롬프트.

  • 도구: 벡터 검색 도구와 계산 도구.

  • 메모리: MongoDB 컬렉션에 상호작용을 저장합니다.

1
  1. 프로젝트 초기화하고 종속성을 설치합니다.

    새 프로젝트 디렉토리를 만든 후, 필요한 종속성을 설치합니다.

    mkdir mongodb-ai-agent
    cd mongodb-ai-agent
    npm init -y
    npm install --quiet dotenv mongodb voyageai openai langchain @langchain/community @langchain/core mathjs pdf-parse

    참고

    프로젝트는 다음 구조를 사용합니다.

    mongodb-ai-agent
    ├── .env
    ├── config.js
    ├── ingest-data.js
    ├── tools.js
    ├── memory.js
    ├── planning.js
    └── index.js
  2. 환경을 구성합니다.

    프로젝트 에 .env 이라는 환경 파일 만듭니다. 이 파일 에이전트, MongoDB 연결 문자열, MongoDB database 및 컬렉션 이름에 대한 API 키가 포함됩니다.

2

프로젝트 에 config.js 이라는 파일 만듭니다. 이 파일 환경 변수를 읽고 애플리케이션 을 MongoDB database 및 OpenAI와 같은 서비스에 연결합니다.

3

프로젝트 에 ingest-data.js 이라는 파일 만듭니다. 이 스크립트 임베딩 모델을 사용하여 최근 MongoDB 수익 보고서가 포함된 샘플 PDF를 MongoDB voyage-3-large 의 컬렉션 으로 수집합니다. 이 코드에는 데이터에 벡터 검색 인덱스 아직 없는 경우 이를 생성하는 함수도 포함되어 있습니다.

자세한 내용을 보려면 데이터 수집을 참조하세요.

4

프로젝트에 tools.js라는 파일을 만듭니다. 이 파일은 에이전트가 질문에 답변하기 위해 사용할 수 있는 도구를 정의합니다. 이 예시에서는 다음 도구를 정의합니다.

  • vectorSearchTool: 벡터 검색 쿼리를 실행하여 컬렉션에서 관련 문서를 조회합니다.

  • calculatorTool: 기본 수학 연산에 mathjs 라이브러리를 사용합니다.

5

프로젝트에 memory.js라는 파일을 만듭니다. 이 파일은 에이전트가 상호 작용을 저장하는 시스템을 정의합니다. 이 예시에서는 다음 함수를 정의하여 단기 기억을 구현합니다.

  • storeChatMessage: 상호작용에 대한 정보를 MongoDB 컬렉션에 저장합니다.

  • retrieveSessionHistory: session_id 필드를 사용하여 특정 세션에 대한 모든 상호 작용을 가져옵니다.

6

프로젝트에 planning.js라는 파일을 만듭니다. 이 파일에는 에이전트의 실행 흐름을 결정하기 위한 다양한 프롬프트와 LLM 호출이 포함될 것입니다. 이 예시에서는 다음 함수를 정의합니다.

  • openAIChatCompletion: 응답을 생성하기 위해 OpenAI API 호출하는 헬퍼 함수입니다.

  • toolSelector: LLM이 작업에 적합한 도구를 선택하는 방식을 결정합니다.

  • generateAnswer: 도구를 사용하여 에이전트의 실행 흐름을 조정하고, LLM을 호출하며, 결과를 처리합니다.

  • getLLMResponse: LLM 응답 생성을 위한 헬퍼 함수입니다.

7

마지막으로 프로젝트에 index.js라는 파일을 만듭니다. 이 파일은 에이전트를 실행하고 사용자와 상호 작용할 수 있게 합니다.

프로젝트를 저장하고 다음 명령을 실행합니다. 에이전트를 실행할 때 다음을 수행합니다.

  • 아직 그렇게 하지 않았다면 에이전트에게 샘플 데이터를 섭취하도록 지시하세요.

  • 새 세션을 시작하거나 기존 세션을 계속하려면 세션 ID를 입력하세요.

  • 질문을 하세요. 에이전트는 도구, 이전 상호작용, 계획 단계에서 정의된 프롬프트를 기반으로 응답을 생성합니다.

예시 출력을 참조하여 샘플 상호 작용을 확인하세요.

node index.js
Ingest sample data? (y/n): y
Chunked PDF into 100 documents.
Inserted documents: 100
Attempting to create/verify Vector Search Index...
New index named vector_index is building.
Polling to check if the index is ready. This may take up to a minute.
vector_index is ready for querying.
Enter a session ID: 123
Enter your query (or type 'quit' to exit): What was MongoDB's latest acquisition?
Tool selected: vector_search_tool
Answer:
MongoDB recently acquired Voyage AI, a pioneer in embedding and reranking models that power next-generation AI applications.
Enter your query (or type 'quit' to exit): What do they do?
Tool selected: vector_search_tool
Answer: Voyage AI is a company that specializes in
state-of-the-art embedding and reranking models designed to
power next-generation AI applications. These technologies help
organizations build more advanced and trustworthy AI
capabilities.
Enter your query (or type 'quit' to exit): What is 123+456?
Tool selected: calculator_tool
Answer:
579

Atlas 사용하는 경우 Atlas UI 의 네임스페이스 로이동하여 임베딩 및 상호 작용을 확인할 수 있습니다.ai_agent_db.embeddings

8

이제 기본 AI 에이전트를 보유하고 있으므로, 다음과 같은 방법으로 계속 개발할 수 있습니다.

  • 벡터 검색 도구의 성능을 향상시키고 RAG 파이프라인을 세밀하게 조정합니다.

  • 에이전트에 하이브리드 또는 전체 텍스트 검색 도구 등 더 많은 도구를 추가합니다.

  • 더 발전된 프롬프트와 LLM 호출을 사용하여 계획 단계를 세분화합니다.

  • MongoDB SearchMongoDB Vector Search 를 사용하여 세션 전반에서 중요한 상호 작용을 저장 하고 조회 장기 기억 및 고급 메모리 시스템을 구현합니다.

1
  1. 프로젝트 초기화하고 종속성을 설치합니다.

    새 프로젝트 디렉토리를 만든 후, 필요한 종속성을 설치합니다.

    mkdir mongodb-ai-agent
    cd mongodb-ai-agent
    pip install --quiet --upgrade pymongo voyageai openai langchain langchain-mongodb
    langchain-community python-dotenv

    참고

    프로젝트는 다음 구조를 사용합니다.

    mongodb-ai-agent
    ├── .env
    ├── config.py
    ├── ingest_data.py
    ├── tools.py
    ├── memory.py
    ├── planning.py
    ├── main.py
  2. 환경을 구성합니다.

    프로젝트 에 .env 이라는 환경 파일 만듭니다. 이 파일 에이전트, MongoDB 연결 문자열, MongoDB database 및 컬렉션 이름에 대한 API 키가 포함됩니다.

2

프로젝트 에 config.py 이라는 파일 만듭니다. 이 파일 환경 변수를 읽고 애플리케이션 을 MongoDB database 및 OpenAI와 같은 서비스에 연결합니다.

3

프로젝트 에 ingest_data.py 이라는 파일 만듭니다. 이 스크립트 임베딩 모델을 사용하여 최근 MongoDB 수익 보고서가 포함된 샘플 PDF를 MongoDB voyage-3-large 의 컬렉션 으로 수집합니다. 이 코드에는 데이터에 벡터 검색 인덱스 아직 없는 경우 이를 생성하는 함수도 포함되어 있습니다.

자세한 내용을 보려면 데이터 수집을 참조하세요.

4

프로젝트에 tools.py라는 파일을 만듭니다. 이 파일은 에이전트가 질문에 답변하기 위해 사용할 수 있는 도구를 정의합니다. 이 예시에서는 다음 도구를 정의합니다.

  • vector_search_tool: 벡터 검색 쿼리를 실행하여 컬렉션에서 관련 문서를 조회합니다.

  • calculator_tool: 기본 수학 작업에 eval() 함수를 사용합니다.

5

프로젝트에 memory.py라는 파일을 만듭니다. 이 파일은 에이전트가 상호 작용을 저장하는 시스템을 정의합니다. 이 예시에서는 다음 함수를 정의하여 단기 기억을 구현합니다.

  • store_chat_message: 상호작용에 대한 정보를 MongoDB 컬렉션에 저장합니다.

  • retrieve_session_history: session_id 필드를 사용하여 특정 세션에 대한 모든 상호 작용을 가져옵니다.

6

프로젝트에 planning.py라는 파일을 만듭니다. 이 파일에는 에이전트의 실행 흐름을 결정하기 위한 다양한 프롬프트와 LLM 호출이 포함될 것입니다. 이 예시에서는 다음 함수를 정의합니다.

  • tool_selector: LLM이 작업에 적합한 도구를 선택하는 방식을 결정합니다.

  • generate_answer: 도구를 사용하여 에이전트의 실행 흐름을 조정하고, LLM을 호출하며, 결과를 처리합니다.

  • get_llm_response: LLM 응답 생성을 위한 헬퍼 함수입니다.

7

마지막으로 프로젝트에 main.py라는 파일을 만듭니다. 이 파일은 에이전트를 실행하고 사용자와 상호 작용할 수 있게 합니다.

프로젝트를 저장하고 다음 명령을 실행합니다. 에이전트를 실행할 때 다음을 수행합니다.

  • 아직 그렇게 하지 않았다면 에이전트에게 샘플 데이터를 섭취하도록 지시하세요.

  • 새 세션을 시작하거나 기존 세션을 계속하려면 세션 ID를 입력하세요.

  • 질문을 하세요. 에이전트는 도구, 이전 상호작용, 계획 단계에서 정의된 프롬프트를 기반으로 응답을 생성합니다.

예시 출력을 참조하여 샘플 상호 작용을 확인하세요.

python main.py
Ingest sample data? (y/n): y
Successfully split PDF into 104 chunks.
Generating embeddings and ingesting documents...
Inserted 104 documents into the collection.
Search index 'vector_index' creation initiated.
Polling to check if the index is ready. This may take up to a minute.
vector_index is ready for querying.
Enter a session ID: 123
Enter your query (or type 'quit' to exit): What was MongoDB's latest acquisition?
Tool selected: vector_search_tool
Answer:
MongoDB's latest acquisition was Voyage AI.
Enter your query (or type 'quit' to exit): What do they do?
Tool selected: vector_search_tool
Answer:
Voyage AI is a company that specializes in state-of-the-art embedding and reranking models designed to power next-generation AI applications. These technologies help organizations build more advanced and trustworthy AI capabilities.
Enter your query (or type 'quit' to exit): What is 123+456?
Tool selected: calculator_tool
Answer:
579

Atlas 사용하는 경우 Atlas UI 의 네임스페이스 로이동하여 임베딩 및 상호 작용을 확인할 수 있습니다.ai_agent_db.embeddings

8

이제 기본 AI 에이전트를 보유하고 있으므로, 다음과 같은 방법으로 계속 개발할 수 있습니다.

  • 벡터 검색 도구의 성능을 향상시키고 RAG 파이프라인을 세밀하게 조정합니다.

  • 에이전트에 하이브리드 또는 전체 텍스트 검색 도구 등 더 많은 도구를 추가합니다.

  • 더 발전된 프롬프트와 LLM 호출을 사용하여 계획 단계를 세분화합니다.

  • MongoDB SearchMongoDB Vector Search 를 사용하여 세션 전반에서 중요한 상호 작용을 저장 하고 조회 장기 기억 및 고급 메모리 시스템을 구현합니다.

MongoDB를 사용한 AI 에이전트 구축에 대한 추가 튜토리얼은 다음 표를 참조하세요.

돌아가기

플레이그라운드 챗봇 데모 빌더

스킬 배지 획득

'Gen AI'를 무료로 마스터하세요!

자세한 내용을 알아보세요.

이 페이지의 내용