Mastra의 RAG (검색 증강 생성)

Mastra의 RAG는 자체 데이터 소스에서 관련 컨텍스트를 통합하여 LLM 출력을 향상시키고, 정확성을 높이며 실제 정보에 기반한 응답을 제공하는 데 도움이 됩니다.

Mastra의 RAG 시스템은 다음을 제공합니다:

  • 문서를 처리하고 임베딩하는 표준화된 API

  • 여러 벡터 저장소 지원

  • 최적의 검색을 위한 청킹 및 임베딩 전략

  • 임베딩 및 검색 성능 추적을 위한 관찰 가능성

예제

RAG를 구현하려면 문서를 청크로 처리하고, 임베딩을 생성하여 벡터 데이터베이스에 저장한 다음, 쿼리 시점에 관련 컨텍스트를 검색합니다.

import { embedMany } from "ai";
import { openai } from "@ai-sdk/openai";
import { PgVector } from "@mastra/pg";
import { MDocument } from "@mastra/rag";
import { z } from "zod";

// 1. 문서 초기화
const doc = MDocument.fromText(`여기에 문서 텍스트...`);

// 2. 청크 생성
const chunks = await doc.chunk({
  strategy: "recursive",
  size: 512,
  overlap: 50,
});

// 3. 임베딩 생성; 각 청크의 텍스트를 전달해야 합니다
const { embeddings } = await embedMany({
  values: chunks.map((chunk) => chunk.text),
  model: openai.embedding("text-embedding-3-small"),
});

// 4. 벡터 데이터베이스에 저장
const pgVector = new PgVector({
  connectionString: process.env.POSTGRES_CONNECTION_STRING,
});
await pgVector.upsert({
  indexName: "embeddings",
  vectors: embeddings,
}); // 'embeddings'라는 인덱스 이름 사용

// 5. 유사한 청크 쿼리
const results = await pgVector.query({
  indexName: "embeddings",
  queryVector: queryVector,
  topK: 3,
}); // queryVector는 쿼리의 임베딩입니다

console.log("유사한 청크:", results);

이 예제는 핵심 요소들을 보여줍니다: 문서 초기화, 청크 생성, 임베딩 생성, 저장, 그리고 유사한 콘텐츠 쿼리입니다.

문서 처리

RAG의 기본 구성 요소는 문서 처리입니다. 문서는 다양한 전략(재귀적, 슬라이딩 윈도우 등)을 사용하여 청킹할 수 있으며 메타데이터로 풍부하게 만들 수 있습니다. 청킹 및 임베딩 문서를 참조하세요.

벡터 저장소

Mastra는 pgvector, Pinecone, Qdrant, MongoDB를 포함하여 임베딩 지속성과 유사성 검색을 위한 여러 벡터 저장소를 지원합니다. 벡터 데이터베이스 문서를 참조하세요.

관찰 가능성 및 디버깅

Mastra의 RAG 시스템은 검색 파이프라인을 최적화하는 데 도움이 되는 관찰 가능성 기능을 포함합니다:

  • 임베딩 생성 성능 및 비용 추적

  • 청크 품질 및 검색 관련성 모니터링

  • 쿼리 패턴 및 캐시 적중률 분석

  • 관찰 가능성 플랫폼으로 메트릭 내보내기

자세한 내용은 OTel 구성 페이지를 참조하세요.

추가 리소스


2025년 7월 26일 기준 번역
by dongne.lab@gmail.com

Updated on