InfoGrab Docs

시맨틱 검색

시맨틱 검색에 대해 설명합니다.

시맨틱 검색은 키워드 매칭이 아닌 의미를 기반으로 의미적으로 유사한 콘텐츠를 찾기 위해 벡터 임베딩을 사용하는 GitLab 프레임워크입니다. 이를 통해 Duo Chat과 같은 AI 기능이 사용자 쿼리에 대한 관련 컨텍스트를 검색할 수 있습니다. 개요 # 시맨틱 검색은 텍스트를 벡터 임베딩으로 변환하고 벡터 저장소에 저장합니다. 사용자가 쿼리를 만들면 쿼리도 임베딩으로 변환되어 저장된 벡터와 비교하여 가장 유사한 결과를 찾습니다. 이 접근 방식은 의미적 의미를 포착하여 정확한 키워드가 일치하지 않아도 관련 콘텐츠를 찾을 수 있습니다. 시맨틱 코드 검색 # 시맨틱 코드 검색은 시맨틱 검색 프레임워크의 첫 번째 구현입니다. Duo Chat 및 기타 AI 기능이 저장소에서 관련 코드 스니펫을 찾을 수 있게 합니다. 이 기능은 GitLab Duo Agent Platform 및 기타 AI 플랫폼에서 사용할 수 있는 MCP 도구( semantic_code_search ) 로 제공됩니다. 자세한 내용은 시맨틱 코드 검색 아키텍처 를 참조하세요. 아키텍처 # 시맨틱 검색 프레임워크는 gitlab-active-context 젬으로 구동됩니다. 이 젬은 다양한 벡터 저장소(Elasticsearch, OpenSearch, pgvector를 사용한 PostgreSQL)에 대한 변환 레이어를 제공하여 벡터 저장소별 구현 없이도 동일한 코드가 지원되는 모든 벡터 저장소와 작동할 수 있게 합니다. 이 프레임워크는 확장 가능하며 여러 유형의 시맨틱 검색을 지원하도록 설계되었습니다. 각 시맨틱 검색 유형은 다음을 사용하여 구현됩니다: 컬렉션 ( Ai::ActiveContext::Collections:: ): 인덱싱되는 콘텐츠와 저장 방법을 정의합니다 참조 ( Ai::ActiveContext::References:: ): 콘텐츠 업데이트를 위한 임베딩을 추적하고 관리합니다 쿼리 ( Ai::ActiveContext::Queries:: ): 벡터 저장소에서 유사한 콘텐츠를 검색합니다 큐 ( Ai::ActiveContext::Queues:: ): 임베딩 생성의 비동기 처리를 관리합니다 마이그레이션 : 벡터 저장소의 스키마 변경 및 데이터 변환을 실행합니다 다른 콘텐츠 유형(예: 머지 리퀘스트 또는 문서)에 이러한 컴포넌트를 구현하면 새 시맨틱 검색 유형을 추가할 수 있습니다. 임베딩 생성 # 임베딩은 Ai::ActiveContext::References::Code 와 같은 참조 클래스를 사용하여 큐 시스템을 통해 비동기적으로 생성됩니다: 참조 추적 : 콘텐츠가 생성되거나 업데이트되면 적절한 참조 클래스에서 임베딩 참조가 추적됩니다 배치 처리 : 참조는 Ai::ActiveContext::BulkProcessWorker 에 의해 배치로 처리됩니다 벡터 저장 : 생성된 임베딩은 구성된 벡터 저장소에 저장됩니다 BulkProcessWorker 는 매 분마다 실행되고 큐에서 임베딩 참조를 처리하는 크론 작업입니다. 참조를 가져와서 임베딩을 생성하고 큐에서 제거합니다. 처리 후 큐가 비