InfoGrab DocsInfoGrab Docs

시맨틱 검색

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

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