콘텐츠로 이동

검색, 그라운딩, 분석 경로

“RAG”는 보통 한 가지를 뜻합니다. 말뭉치를 조각으로 나누어 벡터 스토어에 임베딩하고, 가장 가까운 결과를 프롬프트에 붙여 넣는 것입니다. PlaidCloud는 단 하나의 말뭉치, 즉 제품 문서에 대해서만 이 방식을 사용하며, 사용자의 데이터에는 의도적으로 이 방식을 사용하지 않습니다.

사용자의 테이블은 질문받는 그 순간에 사용자의 권한으로 실시간으로 읽습니다. 이는 성능을 위한 결정이 아니라, 답변을 신뢰할 수 있게 하고 액세스 제어를 의미 있게 만드는 방식입니다.

세 가지 검색 경로. 첫 번째 경로는 도구 설명의 임베딩을 사용해 제공할 도구를 선택합니다. 두 번째 경로는 게시된 문서 말뭉치에 대한 BM25 키워드 검색입니다. 세 번째 경로는 분석 경로와 MCP 도구를 통해 사용자의 데이터를 실시간으로 읽습니다. 이들이 함께 신뢰도와 유의 사항이 포함된 그라운딩된 답변을 만들어 냅니다.

이 경로는 자체 도구 카탈로그를 가진 앱 내 어시스턴트에서 실행됩니다. 모델에 보여 주는 모든 도구 설명은 매 턴마다 프롬프트 토큰을 소모하므로, 모델이 무언가를 보기 전에 질문을 사용자의 데이터가 아니라 도구 설명과 시맨틱 유사도로 대조하여 관련 있어 보이는 도구만 제공합니다.

다른 접점에서는 도구 카탈로그를 MCP 연결이 처리합니다. Anthropic의 커넥터는 서버 측에서 이를 관리하고, 클라이언트 측 루프는 선언하는 도구 범위에 상한을 둡니다. 아래의 경로 2와 3은 모든 곳에 적용됩니다.

세 가지 세부 사항이 중요합니다.

  • 임베딩은 콘텐츠가 아니라 도구를 설명합니다. 도구 이름과 설명으로 한 번 계산하여 캐시하며, 설명이 바뀌면 자동으로 다시 만듭니다.
  • 일부 도구는 항상 포함됩니다. 질문에 언급이 없더라도 에이전트가 누가, 어느 프로젝트에서 질문하는지 파악할 수 있도록 하기 위해서입니다.
  • 신뢰도가 낮으면 전체 목록으로 대체합니다. 확신에 차서 잘못 좁히는 것보다 전체 토큰 비용을 한 번 지불하는 것이 낫기 때문에, 불확실한 일치는 모든 도구를 보여 줍니다. 매우 짧은 턴(“감사합니다”, “네”)은 이 단계를 완전히 건너뜁니다.

이는 진정한 검색 증강 생성 경로이며, “어떻게 하나요…”, “무엇인가요…”, “어디에서 구성하나요…” 같은 질문에 답합니다.

게시된 문서는 페이지당 하나의 항목으로 구성된 구조화된 말뭉치로 가져오며, 키워드 순위 함수인 Okapi BM25로 메모리에 인덱싱됩니다. 에이전트는 두 단계로 작업합니다.

  1. 검색은 슬러그, 제목, 설명, 점수로 이루어진 순위가 매겨진 후보 페이지 목록을 반환합니다.
  2. 가져오기는 에이전트가 실제로 필요한 페이지를 정한 뒤, 해당 페이지 하나 또는 이름이 지정된 한 섹션만 가져옵니다.

설계상의 핵심은 에이전트가 언제 검색할지 그리고 얼마나 읽을지를 결정한다는 점입니다. 수동 주입은 도움이 되든 안 되든 모든 프롬프트에 무언가를 붙여 넣지만, 도구 기반 검색은 관련 없는 페이지를 컨텍스트 창에서 완전히 제외하고 에이전트가 사용한 페이지를 인용하게 하여 후속 확인이 가능하게 합니다.

문서 말뭉치에 일시적으로 접근할 수 없으면 에이전트는 턴을 실패시키지 않고 문서 없이 답변합니다.

사용자의 수치에 대한 질문은 검색으로 답하지 않습니다. 에이전트는 필요한 것을 필요한 때에 권한이 검사되는 도구를 통해 읽습니다. 테이블 스키마, 행, 차원 멤버, 워크플로 계보, 배부 추적이 그 대상입니다.

그래서 답변이 최신입니다. 마지막으로 인덱싱된 시점이 아니라 현재의 데이터를 반영합니다. 또한 액세스 제어가 작동하는 이유이기도 합니다. 권한 경계를 넘어 유출될 수 있는 미리 만들어진 인덱스가 없기 때문입니다.

실시간 읽기에는 어느 테이블인지 알아야 합니다. 분석 경로는 이를 간편하게 만드는 공유 어휘입니다. “운영 실적”, “손익계산서”, “인원 현황” 같은 알기 쉬운 이름을 실제 프로젝트와 테이블에 한 번 매핑해 두면, 이후 워크스페이스의 모든 사용자가 사용할 수 있습니다.

  • 매번 프로젝트와 테이블을 지정하는 대신 이름으로 질문합니다.
  • 하나를 워크스페이스 기본값으로 지정하면 대상이 정해지지 않은 “지난 분기에 무엇이 바뀌었나요?” 같은 질문이 적절한 곳으로 연결됩니다.
  • 모두가 같은 것을 의미합니다. 팀 전체가 “손익계산서”라고 말하면 같은 테이블에 도달합니다.

관리자가 등록하고 누구나 사용할 수 있으며, 모든 질문은 여전히 질문한 사용자 본인의 권한으로 실행됩니다. 앱 내 어시스턴트, Microsoft 365 Copilot, 연결된 코딩 에이전트에서 동일하게 작동합니다. 설정 방법은 분석 경로를 참조하십시오.

어시스턴트는 식을 작성할 때 함수 이름을 기억에 의존해 추측하지 않습니다. 모든 PlaidCloud 식 함수의 이름, 시그니처, 문서 링크, 카테고리로 구성된 구조화된 카탈로그를 참조하며, 이를 웨어하우스가 실제로 제공하는 함수와 교차 검증하고 이름이 거의 맞는 경우에는 유사한 항목을 제안합니다. 함수 이름에서는 “거의 맞는 것”이 틀린 것이므로 유사도 검색이 아닌 조회입니다.

사람들이 당연히 걱정하는 두 가지가 있습니다.

  • 여기서 검색된 어떤 것도 모델을 학습시키지 않습니다. 그라운딩은 하나의 요청에 정보를 넣을 뿐입니다. 모델 가중치를 바꾸지 않으며, 사용자의 콘텐츠는 누구의 모델을 학습시키는 데에도 사용되지 않습니다.
  • 검색 인덱스에는 공개 문서만 들어 있습니다. 고객 콘텐츠는 임베딩되지 않습니다.

사용자의 데이터가 어디로 가는지, 그리고 이를 직접 관리하는 인프라 안에 유지하는 방법은 자체 관리 LLM 사용하기에서 다룹니다.

그라운딩 덕분에 어시스턴트는 무언가를 지어내는 대신 *“모르겠습니다”*라고 말할 수 있습니다. 모든 수치는 실제 쿼리에서, 모든 제품 관련 주장은 실제 문서 페이지에서 나오므로 답변을 평가할 수 있습니다. 각 답변에는 신뢰도 신호와 쉬운 말로 된 유의 사항이 포함되며, 서술형 요약은 제약 사항을 슬그머니 빠뜨리거나 분석에서 나오지 않은 수치를 인용하지 못하도록 검사됩니다. 신뢰할 수 있는 답변을 참조하십시오.