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 구성 페이지를 참조하세요.
추가 리소스
- 사고 연쇄 RAG 예제
-
모든 RAG 예제 (다양한 청킹 전략, 임베딩 모델 및 벡터 저장소 포함)
2025년 7월 26일 기준 번역
by dongne.lab@gmail.com