Activeloop Deep Memory는 사용 사례에 맞게 Vector Store를 최적화하고 LLM 앱에서 더 높은 정확도를 달성할 수 있도록 하는 도구 모음입니다.
Retrieval-Augmented Generation (RAG)은 최근 상당한 주목을 받고 있습니다. 고급 RAG 기술과 agent가 등장하면서 RAG가 달성할 수 있는 잠재력이 확장되고 있습니다. 그러나 여러 과제가 RAG의 프로덕션 통합을 제한할 수 있습니다. 프로덕션 환경에서 RAG를 구현할 때 고려해야 할 주요 요소는 정확도(recall), 비용 및 지연 시간입니다. 기본적인 사용 사례의 경우 OpenAI의 Ada 모델과 단순한 유사도 검색을 결합하면 만족스러운 결과를 얻을 수 있습니다. 그러나 검색 중 더 높은 정확도나 recall을 위해서는 고급 검색 기술을 사용해야 할 수 있습니다. 이러한 방법에는 다양한 데이터 청크 크기, 쿼리를 여러 번 재작성하는 등의 작업이 포함될 수 있으며, 이는 잠재적으로 지연 시간과 비용을 증가시킬 수 있습니다. Activeloop Deep Lake 사용자가 이용할 수 있는 기능인 Activeloop의 Deep Memory는 사용자 쿼리를 코퍼스의 관련 데이터와 일치시키도록 훈련된 작은 신경망 레이어를 도입하여 이러한 문제를 해결합니다. 이 추가 기능은 검색 중 최소한의 지연 시간을 발생시키지만 검색 정확도를 최대 27%까지 향상시킬 수 있으며, 추가적인 고급 RAG 기술 없이도 비용 효율적이고 사용하기 간편합니다.
이 튜토리얼에서는 DeepLake 문서를 파싱하고 문서에서 질문에 답할 수 있는 RAG 시스템을 만들 것입니다.
1. Dataset 생성
이 튜토리얼에서는BeautifulSoup 라이브러리와 LangChain의 문서 파서인 Html2TextTransformer, AsyncHtmlLoader를 사용하여 activeloop의 문서를 파싱합니다. 따라서 다음 라이브러리를 설치해야 합니다:
BeautifulSoup을 사용하여 웹페이지의 모든 링크 파싱:
데이터를 사용자가 읽을 수 있는 형식으로 변환:
2. 합성 쿼리 생성 및 Deep Memory 훈련
다음 단계는 사용자 쿼리를 이미 보유한 데이터셋과 정렬하는 deep_memory 모델을 훈련하는 것입니다. 아직 사용자 쿼리가 없다면 걱정하지 마세요. LLM을 사용하여 생성할 것입니다!TODO: Add image
위에서 deep_memory가 작동하는 전체 스키마를 보여주었습니다. 보시다시피 훈련하려면 코퍼스 데이터(쿼리하려는 데이터)와 함께 relevance, queries가 필요합니다. 코퍼스 데이터는 이전 섹션에서 이미 채워졌으며, 여기서는 질문과 relevance를 생성할 것입니다.questions- 각 문자열이 쿼리를 나타내는 문자열 텍스트입니다relevance- 각 질문에 대한 ground truth 링크를 포함합니다. 주어진 질문에 대한 답변을 포함하는 여러 문서가 있을 수 있습니다. 이 때문에 relevance는List[List[tuple[str, float]]]이며, 외부 리스트는 쿼리를 나타내고 내부 리스트는 관련 문서를 나타냅니다. Tuple은 str, float 쌍을 포함하며, 여기서 문자열은 소스 문서의id(데이터셋의idtensor에 해당)를 나타내고, float는 현재 문서가 질문과 얼마나 관련이 있는지를 나타냅니다.
3. Deep Memory 성능 평가
훌륭합니다! 모델을 훈련했습니다! recall에서 상당한 개선을 보이고 있지만, 이제 어떻게 사용하고 보지 못한 새로운 데이터에서 평가할 수 있을까요? 이 섹션에서는 모델 평가 및 추론 부분을 자세히 살펴보고 검색 정확도를 높이기 위해 LangChain과 함께 어떻게 사용할 수 있는지 알아보겠습니다.3.1 Deep Memory 평가
먼저 deep_memory의 내장 평가 메서드를 사용할 수 있습니다. 여러recall 메트릭을 계산합니다.
몇 줄의 코드로 쉽게 수행할 수 있습니다.
3.2 Deep Memory + RAGas
3.3 Deep Memory 추론
TODO: Add image
deep_memory 사용:3.4 Deep Memory 비용 절감
Deep Memory는 기존 워크플로우를 변경하지 않고 검색 정확도를 높입니다. 또한 LLM에 입력되는 top_k를 줄임으로써 토큰 사용량을 줄여 추론 비용을 크게 절감할 수 있습니다.Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.