작성자: Databricks AI 연구팀
추론 확장을 통해 LLM은 적절한 컨텍스트가 제공된다면 대부분의 실제 상황을 추론할 수 있는 수준까지 발전했습니다. 많은 실제 에이전트의 경우 병목 현상은 더 이상 추론 능력이 아니라 에이전트를 올바른 정보에 기반하게 하는 것입니다. 즉, 당면 과제에 필요한 것을 모델에 제공하는 것입니다.
이는 에이전트 설계를 위한 새로운 축을 시사합니다. 더 강력한 모델이나 더 나은 프롬프트에만 집중하기보다는, 에이전트가 더 많은 정보를 축적함에 따라 성능이 향상되는지 질문해 볼 수 있습니다. 저희는 이를 메모리 스케일링이라고 부릅니다. 이는 에이전트의 메모리에 저장된 과거 대화, 사용자 피드백, 상호작용 궤적(성공 및 실패 모두), 비즈니스 컨텍스트의 양에 따라 에이전트 성능이 향상되는 속성입니다. 이 효과는 조직 내 지식이 풍부하고 단일 에이전트가 많은 사용자에게 서비스를 제공하는 기업 환경에서 특히 두드러집니다.
하 지만 이것은 선험적으로 명확하지 않습니다. 메모리가 많다고 해서 에이전트가 자동으로 더 나아지는 것은 아닙니다. 품질이 낮은 추적은 잘못된 교훈을 줄 수 있으며, 저장소가 커질수록 검색이 더 어려워집니다. 핵심 질문은 에이전트가 단순히 메모리를 축적하는 것이 아니라 더 큰 메모리를 생산적으로 사용할 수 있는지 여부입니다.
Databricks에서는 인간의 피드백을 기반으로 에이전트 행동을 조정하는 ALHF 및 MemAlign 과, 검색 에이전트가 복잡한 자연어 지시와 지식 소스 스키마를 정확하고 구조화된 검색 query로 변환할 수 있게 해주는 Instructed Retriever를 통해 이러한 방향으로 초기 단계를 밟아왔습니다. 이러한 시스템들은 종합적으로 에이전트가 영구 메모리를 통해 더 유용해질 수 있음을 보여줍니다. 이 게시물에서는 메모리 확장 동작을 보여주는 실험 결과를 제시하고, 프로덕션에서 이를 지원하는 데 필요한 인프라에 대해 논의하며, 메모리 기반 에이전트에 대한 미래 지향적인 비전을 제공합니다.
메모리 확장(Memory Scaling)은 에이전트의 외부 메모리가 커짐에 따라 성능이 향상되는 속성입니다. 여기서 "메모리"는 모델의 가중치나 현재 컨텍스트 창과는 별개로, 에이전트가 추론 시간에 상호 작용할 수 있는 영구적인 정보 저장소를 의미합니다.
이는 메모리 스케일링을 파라미터 스케일링 및 추론 시간 스케일링과는 구별되는 보완적인 축으로 만들어, 모델 크기나 추론 능력만으로는 해결할 수 없는 도메인 지식 및 그라운딩의 격차를 해소합니다. 메모리 스케일링으로 인한 개선은 답변 품질에만 국한되지 않습니다. 에이전트가 환경에 대한 관련 스키마, 도메인 규칙 또는 성공적인 과거 작업을 기억하면 중복 탐색을 건너뛰고 쿼리를 더 빨리 해결할 수 있습니다. 저희 실험에서는 정확도와 효율성 모두에서 스케일링을 관찰할 수 있었습니다.
지속적 학습은 일반적으로 시간에 따른 모델 매개변수 업데이트에 중점을 두는데, 이는 제한된 환경에서는 잘 작동하지만 다수의 동시 사용자, 에이전트, 빠르게 변화하는 프로젝트가 있는 경우에는 계산 비용이 많이 들고 취약해집니다. 메모리 확장은 다른 질문을 던집니다. 수천 명의 사용자를 둔 에이전트가 단 한 명의 사용자를 둔 에이전트보다 더 나은 성능을 보일까요? LLM 가중치를 고정한 상태에서 에이전트의 공유 외부 상태를 확장하면 정답은 '예'가 될 수 있습니다. 즉, 한 사용자로부터 학습된 워크플로 패턴을 재훈련 없이 즉시 검색하여 다른 사용자에게 적용할 수 있습니다. 단일 사용자의 모델 매개변수 업데이트에 초점을 맞추는 지속적 학습은 애초에 이러한 속성을 제공하도록 설계되지 않았습니다.
큰 컨텍스트 창은 메모리의 대체재처럼 보일 수 있지만, 서로 다른 문제를 해결합니다. 수백만 개의 원시 토큰을 프롬프트에 채워 넣는 것은 지연 시간을 늘리고 compute 비용을 높이며, 관련 없는 토큰이 어텐션을 두고 경 쟁하면서 추론 품질을 저하시킵니다. 대신 메모리 스케일링은 선택적 검색, 즉 얼마나 많은 컨텍스트를 포함할지뿐만 아니라 무엇을 포함할지를 결정하여 현재 작업과 관련된 신호가 강한 정보만 드러내는 방식에 의존합니다.
모든 메모리가 같은 목적을 수행하는 것은 아닙니다. 실제로는 두 가지 구분이 중요합니다.
일화적 메모리 vs. 의미적 메모리. 일화적 메모리는 대화 로그, 도구 호출 궤적, 사용자 피드백과 같은 과거 상호작용의 원시 기록입니다. 의미적 메모리는 이러한 상호작용에서 추출된 일반화된 기술과 사실입니다(예: "이 영역의 사용자가 '분기'라고 말할 때는 항상 회계 분기를 의미한다"). 각 유형은 서로 다른 저장, 처리, 검색 전략을 필요로 합니다. 일화적 메모리는 직접 검색을 위해, 의미적 메모리는 LLM에 의해 추출되어 더 광범위한 패턴 일치를 위해 사용됩니다.
개인적 메모리 vs. 조직적 메모리. 어떤 메모리는 단일 사용자의 선호도 및 워크플로에 국한되지만, 다른 메모리는 명명 규칙, 공통 쿼리, 비즈니스 규칙과 같은 공유된 조직의 지식을 나타냅니다. 메모리 시스템은 검색 및 업데이트의 범위를 적절하게 지정해야 합니다. 즉, 권한 및 ACL을 존중하면서 개인 컨텍스트는 비공개로 유지하고 조직의 지식은 광범위하게 노출해야 합니다.
MemAlign 은 AI 에이전트를 위한 간단한 메모리 프레임워크가 어떤 모습일 수 있는지에 대한 저희의 탐구입니다. 이는 과거의 상호작용을 일화 기억(episodic memories)으로 저장하고, LLM을 사용하여 이를 일반화된 규칙과 패턴(의미 기억, semantic memories)으로 추출하며, 추론 시 가장 관련성 높은 항목을 검색하여 에이전트를 안내합니다. 프레임워크에 대한 자세한 내용은 이전 블로그 게시물을 참조하세요.
저희는 비즈니스 사용자가 평이한 영어로 데이터 관련 질문을 하고 SQL 기반 답변을 받는 자연어 인터페이스인 Databricks Genie space에서 MemAlign을 테스트했습니다. 작업 쿼리 및 답변의 예는 다음과 같습니다.
저희의 목표는 선별된 예시(레이블 지정됨)와 원시 사용자 대화 Logs(레이블 미지정)라는 두 가지 데이터 소스를 사용하여, 더 많은 메모리를 제공함에 따라 에이전트 성능이 어떻게 확장되는지 측정하는 것입니다.
에이전트의 메모리에 주석이 달린 학습 예제 샤드를 점진적으로 추가하면서 10개의 Genie 스페이스에 걸쳐 있는 새로운 질문에 대해 MemAlign을 평가했습니다. 저희의 기준선은 전문가가 큐레이션한 Genie 지침(수동으로 작성된 테이블 스키마, 도메인 규칙, 퓨샷 예제)을 사용하는 에이전트입니다.
결과는 두 차원 모두에서 일관된 스케일링을 보여줍니다.
정확도 테스트 점수는 메모리 샤드를 추가할 때마다 꾸준히 증가하여 0에 가까운 수준에서 70%까지 상승했고, 최종적으로 전문가가 큐레이팅한 기준선을 약 5% 초과했습니다. 조사 결과, 사람이 레이블링한 데이터가 수동으로 작성된 테이블 스키마 및 도메인 규칙보다 더 포괄적이고 따라서 더 유용한 것으로 입증되었습니다.
효율성. 메모리가 증가함에 따라 예시당 평균 추론 단계 수가 약 20개에서 약 5개로 감소했습니다. 에이전트는 데이터베이스를 처음부터 탐색하는 대신 관련 컨텍스트를 직접 검색하는 방법을 학습하여 하드코딩된 명령어의 효율성(약 3.8단계)에 근접했습니다.
그 효과는 누적적입니다. 기억된 샘플이 10개의 서로 다른 Genie 공간에 걸쳐 있기 때문에 각 샤드는 이전 지식을 기반으로 하는 교차 도메인 정보를 제공합니다.
노이즈가 많은 실제 데이터로도 메모리를 확장할 수 있을까요? 이를 알아보기 위해 라이브 Genie space에서 MemAlign을 실행하고 골드 답변이 없는 과거 사용자 대화 Logs를 제공했습니다. LLM 심사관이 이 Logs에서 유용성을 기준으로 필터링했으며, 고품질 Logs만 기억되었습니다.