GitLab Duo 용어집
GitLab v19.1이 목록은 일반적인 의미를 가지지만 GitLab에서 특정 의미로 사용될 수 있는 용어들을 정리한 것입니다. Fine Tuning의 변형 방식입니다. GitLab Duo Agent Platform에서 사용 가능한 에이전트와 플로우의 중앙 레지스트리입니다.
이 목록은 일반적인 의미를 가지지만 GitLab에서 특정 의미로 사용될 수 있는 용어들을 정리한 것입니다. AI와 관련된 기술 용어 중 이 목록에 추가하면 유용할 것 같은 항목이 있다면 추가해 주세요!
일반 용어#
Adapters#
Fine Tuning의 변형 방식입니다. 모델을 직접 열어 레이어 가중치를 조정하는 대신, 새로운 학습된 레이어를 모델 위에 추가하거나 업스트림 독립형 모델에서 호스팅합니다. Adapter 기반 모델(Adapter-based Models)이라고도 합니다. 전체 모델이 아닌 특정 모듈만을 선택적으로 파인튜닝함으로써, Adapters는 최소한의 파라미터 증가만으로 사전 학습된 모델을 특정 작업에 맞게 커스터마이징하는 것을 가능하게 합니다. 이 방식은 모델의 기반 구조를 변경하지 않고도 작업별로 정밀한 조정을 할 수 있게 해줍니다.
AI Catalog#
GitLab Duo Agent Platform에서 사용 가능한 에이전트와 플로우의 중앙 레지스트리입니다. 인스턴스 전체에서 공유됩니다. Catalog는 마켓플레이스이자 컨트롤 플레인으로 기능하여, GitLab 전반에 걸쳐 안전하고 관찰 가능하며 확장 가능한 AI 배포를 가능하게 합니다.
AI Catalog이 제공하는 기능의 비전은 다음과 같습니다:
-
Discovery: 사용자는 어떤 AI 기능이 있는지 탐색하고, 검색하고, 파악할 수 있습니다.
-
Governance: 관리자는 접근 권한, 사용 정책, 감사 로그를 관리할 수 있습니다.
-
Extensibility: 개발자는 메타데이터, 입출력, 성능 지표와 함께 새로운 에이전트 또는 플로우를 등록할 수 있습니다.
AI Gateway#
비 SaaS GitLab 사용자에게 AI 기능에 대한 접근 권한을 부여하는 독립형 서비스입니다. 이 로직은 Cloud Connector 서비스가 준비되면 해당 서비스로 이전될 예정입니다. 최종적으로 AI Gateway는 AI 공급자에게 요청을 프록시하는 엔드포인트를 호스팅하는 데 사용되어, GitLab Rails 모놀리스가 서드파티 대형 언어 모델(LLM)과 직접 통합하고 통신할 필요를 없애게 됩니다. 설계 문서.
AI Gateway prompt#
프롬프트 템플릿, 모델 선택, 모델 파라미터를 캡슐화한 것입니다. AI Gateway as the Sole Access Point for Monolith to Access Models 작업의 일환으로, 이러한 구성 요소들을 GitLab Rails 모놀리스에서 AI Gateway의 prompts 패키지로 마이그레이션하고 있습니다.
AI Gateway prompt registry#
특정 작업을 수행하는 데 사용 가능한 AI Gateway Prompt 목록을 유지 관리하는 구성 요소입니다. 현재 AI Gateway의 YAML 파일에서 정의를 읽어 오는 LocalPromptRegistry를 사용합니다.
air-gapped model#
조직의 인트라넷 내부에서만 운영되는 호스팅 모델입니다. GitLab AI 기능의 맥락에서, 이는 에어갭 GitLab 인스턴스에 연결될 수 있습니다.
Bring Your Own Model (BYOM)#
하나 이상의 GitLab Duo 기능에 연결되는 서드파티 모델입니다. 기성품 오픈 소스(OS) 모델, 파인튜닝된 모델, 또는 폐쇄 소스 모델이 될 수 있습니다. GitLab은 GitLab Duo 기능에 대해 특정하고 검증된 BYOM을 지원할 계획이지만, GitLab Duo 기능에 대한 범용 BYOM 사용은 지원하지 않을 예정입니다.
Chat evaluation#
다양한 사용자 질문에 대한 GitLab Duo Chat의 유용성과 정확성을 판단하는 자동화된 메커니즘입니다. MVC는 GitLab CI를 통해 실행되는 RSpec 테스트로, Chat에 일련의 질문을 하고 두 개의 서로 다른 서드파티 LLM이 생성된 답변의 정확성을 판단합니다. MVC. 다음 이터레이션을 위한 설계 문서.
Cloud Connector#
Cloud Connector는 여러 GitLab 배포, 인스턴스, 셀에 공통적인 서비스에 접근하는 방법입니다. 이를 모든 GitLab 고객에게 이러한 서비스를 제공하는 데 사용되는 기술 솔루션 및 API 집합을 지칭하는 포괄적인 용어로 사용합니다. 자세한 내용은 Cloud Connector 아키텍처를 참조하세요.
Closed source model#
조직에서 처음부터 파인튜닝하거나 구축한 비공개 모델입니다. ChatGPT와 같이 클라우드 서비스로 호스팅될 수 있습니다.
Consensus filtering#
Consensus filtering은 LLM 평가 방법입니다. LLM 심사자(judge)가 여러 LLM의 출력을 프롬프트 세트와 비교하여 평가하도록 요청받습니다. 이것이 Chat Evaluation MVC에 사용되는 평가 방법입니다. Model Validation 팀의 이슈.
Context#
데이터 포인트, 이벤트, 또는 정보 조각을 둘러싸는 관련 정보로, 의미와 함의를 명확히 하는 데 도움을 줍니다. GitLab Duo Chat의 경우, 컨텍스트는 사용자 질문에서 참조하는 이슈 또는 에픽의 속성입니다.
Custom model#
셀프 호스팅 모델, BYOM, 파인튜닝된 모델, RAG 강화 모델, 또는 어댑터 기반 모델을 사용한 GitLab Duo 기능의 모든 구현입니다.
Embeddings#
머신러닝 및 대형 언어 모델의 맥락에서, 임베딩은 단어, 구문, 또는 전체 문서를 연속적인 벡터 공간에서 밀집 수치 벡터로 표현하는 데 사용되는 기법을 말합니다. GitLab에서는 Gemini Enterprise Agent Platform의 Embeddings API를 사용하여 GitLab 문서의 벡터 표현을 생성합니다. 이 임베딩은 embeddings 데이터베이스의 vertex_gitlab_docs 데이터베이스 테이블에 저장됩니다. 임베딩 검색은 vector 확장을 사용하여 Postgres에서 수행됩니다. vertex 임베딩 데이터베이스는 Llm::Embedding::GitlabDocumentation::CreateEmbeddingsRecordsWorker를 크론잡으로 실행하여 매일 최신 버전의 GitLab 문서를 기반으로 업데이트됩니다.
Fine-tuning#
레이블이 지정된 예제 데이터셋을 활용하는 지도 학습 프로세스를 사용하여 기존 모델을 변경함으로써 LLM의 가중치를 업데이트하고, 코드 완성 또는 Chat과 같은 특정 작업에 대한 출력을 개선합니다.
Foundational model#
일반적으로 다음 토큰 예측이라는 일반적인 목표로 학습된 범용 LLM입니다. 이 모델들은 유능하고 유연하며, (파인튜닝 또는 프롬프트 엔지니어링을 통해) 많은 도메인별 작업을 해결하도록 조정될 수 있습니다. 이는 이러한 범용 모델이 많은 다운스트림 모델의 기반으로 이상적임을 의미합니다. 파운데이션 모델의 예: GPT-4o, Claude 3.7 Sonnet.
Frozen model#
파인튜닝할 수 없는 LLM입니다 (Frozen LLM이라고도 함).
GitLab Duo#
GitLab DevSecOps 플랫폼 전반에 걸친 AI 지원 기능입니다. 이러한 기능은 속도를 높이고 소프트웨어 개발 생명주기 전반에 걸친 주요 문제점을 해결하는 데 도움을 주는 것을 목표로 합니다. GitLab Duo 기능 페이지도 참조하세요.
GitLab-managed model#
GitLab이 관리하는 LLM입니다. 현재 모든 GitLab 관리 모델은 외부에서 호스팅되며 AI Gateway를 통해 액세스됩니다. GitLab 소유 API 키가 모델에 접근하는 데 사용됩니다.
Golden questions#
사용자가 GitLab Duo Chat에게 물어볼 수 있어야 한다고 생각하는 질문 유형의 소규모 하위 집합입니다. Chat 평가를 위한 데이터를 생성하는 데 사용됩니다. Chat Beta를 위한 질문.
Ground truth#
주어진 입력에 대한 진정한 출력으로 결정된 데이터로, AI 모델이 학습하고 예측하려는 현실을 나타냅니다. Ground truth 데이터는 종종 사람이 주석을 달지만, 특정 사용 사례에 대해 알려진 좋은 출력을 가진 LLM과 같은 신뢰할 수 있는 소스에서 생성될 수도 있습니다.
Local model#
사용자의 워크스테이션에서 실행되는 LLM입니다. 자세한 정보.
LLM#
대형 언어 모델(Large Language Model, LLM)은 인간과 유사한 텍스트를 이해하고 생성하도록 학습된 매우 대규모의 신경망입니다. GitLab Duo 기능을 위해, GitLab은 현재 Google 및 Anthropic에서 호스팅되는 frozen 모델과 협력하고 있습니다.
Offline model#
인터넷이나 인트라넷 연결 없이 실행되는 모델입니다 (예: 비행기 안에서 노트북으로 모델을 실행하는 경우).
Open-source model#
소스 코드와 가중치가 공개되어 수정 및 재배포가 가능한 모델입니다. 예시: Llama / Llama 2, BLOOM, Falcon, Mistral, Gemma.
Centralized Evaluation Framework#
"Centralized Evaluation Framework"는 GitLab AI 기능 평가를 위한 CLI를 제공하는 Python 라이브러리입니다. 가설 검증을 촉진하여 LLM 애플리케이션의 데이터 기반 개선을 가능하게 합니다. 코드.
Prompt registry#
서드파티 AI 서비스와 상호작용하는 데 사용되는 저장되고 버전 관리된 프롬프트입니다. 설계 문서 제안 MR (닫힘).
Prompt#
LLM이 특정 작업을 수행하도록 보내는 자연어 지침입니다. 프롬프트 가이드라인.
RAG (Retrieval Augmented Generation)#
RAG는 결과를 개인화하기 위해 쿼리의 일부로 LLM에 컨텍스트 데이터를 제공합니다. RAG는 환각(hallucination)을 줄이고 출력 품질을 개선하기 위해 프롬프트에 추가적인 컨텍스트를 주입하는 데 사용됩니다.
RAG pipeline#
사용자 질문과 같은 입력을 시스템으로 받아, 해당 입력과 관련된 데이터를 검색하고, 추가 컨텍스트로 입력을 보강한 다음, 일관성 있고 맥락에 적합한 답변을 생성하기 위해 정보를 합성하는 데 사용되는 메커니즘입니다. 이 설계 패턴은 LLM을 이용한 오픈 도메인 질의응답에 유용하므로, 우리는 GitLab Duo Chat에 대한 질문에 답하기 위해 이 설계 패턴을 사용합니다.
Self-hosted model#
조직이 GitLab 외부에서 호스팅하고 GitLab AI 기능과 상호작용하는 LLM입니다. 스타일 가이드 참조도 확인하세요.
Similarity score#
LLM이 생성한 답변과 참조 ground truth 답변 사이의 유사도를 결정하는 수학적 방법입니다. Model Validation 방향 페이지도 참조하세요.
Tool#
특정 LLM 관련 작업을 수행하는 로직으로, 각 도구는 설명과 고유한 프롬프트를 가집니다. 새 도구 추가 방법.
Unit primitive#
GitLab 전용 용어로, 권한 또는 접근 범위가 제어할 수 있는 기본적인 논리 기능을 가리킵니다. 예시: duo_chat 및 code_suggestions. 이러한 기능들은 현재 GitLab Duo Pro 라이선스의 일부이지만, 잠재적인 미래 제품 패키징 요구사항에 맞게 GitLab Duo 기능을 다양한 그룹으로 쉽게 구성할 수 있도록 각 GitLab Duo 기능 주변에 Unit Primitive 개념을 구축하고 있습니다.
Word-level metrics#
개별 단어의 세분성 수준에서 텍스트의 측면을 비교하는 LLM 평가 방법입니다. Model Validation 팀의 이슈.
Zero-shot agent#
AI의 일반적인 세계에서는, 학습 중에 해당 작업의 예시를 전혀 보지 않고도 작업을 수행할 수 있는 학습 모델 또는 시스템입니다. GitLab에서는 GitLab Duo Chat을 위한 LLM 기반 항공 교통 관제사 역할을 하는 코드의 특정 부분을 지칭하는 데 이 용어를 사용합니다. GitLab zero-shot 에이전트는 LLM이 GitLab Duo Chat에서 사용자 입력을 어떻게 해석해야 하는지 설명하는 시스템 프롬프트와 도구 설명 목록을 가지고 있습니다. 이 정보를 사용하여 에이전트는 사용자의 질문에 답하기 위해 어떤 도구를 사용할지 결정합니다. 에이전트는 도구가 필요 없다고 판단하여 질문에 직접 답할 수도 있습니다. 도구가 사용되면, 도구의 답변이 zero-shot 에이전트에 다시 피드백되어 답변이 충분한지 또는 질문에 답하기 위해 추가 도구가 사용되어야 하는지를 평가합니다.
코드.
GitLab Duo Agent Platform#
Flow#
에이전트 팀이 작업을 완료하기 위해 (에이전틱 또는 결정론적) 액션을 실행하도록 오케스트레이션하는 사전 정의된 구조적 단계 시퀀스입니다. 플로우는 트리거 또는 수동으로 시작됩니다. 입력은 자연어 또는 사전 정의된 키-값 쌍(예: 프로젝트 이름, 제거할 기능 플래그)이 될 수 있습니다.
예시: "테스트 케이스 생성 → CI 파이프라인 파일 업데이트 → 변경 사항 커밋 → 머지 리퀘스트에서 사용자에게 알림."
Flow 유형#
-
Foundational: GitLab Duo Workflow Service에 정의되고, GitLab이 제공하고 유지 관리합니다 (예: issue-to-MR 플로우).
-
Custom: 사용자가 AI Catalog을 통해 구축합니다.
Flow 실행#
-
Runner job: "원격 실행(remote execution)"이라고도 합니다. GitLab Runner를 사용한 플랫폼에서의 비동기 실행입니다.
-
Local (IDE 또는 CLI): 동기 실행입니다. 파일 시스템과 직접 상호작용할 수 있습니다 (예: 소프트웨어 개발 플로우).
플로우 사용 시기#
플로우는 프로젝트 전반에 걸쳐 안정적이고 일관되게 실행되어야 하는 반복 가능한 다단계 자동화에 가장 적합합니다. 플로우는 실패한 파이프라인 수정, 의존성 업데이트, 또는 정책 검사 적용과 같이 예측 가능한 패턴을 따르는 작업에 이상적입니다. 플로우는 지속적인 사람의 입력 없이 실행될 수 있습니다.
새로운 foundational 플로우 추가#
GitLab에 새로운 foundational 플로우를 추가하는 방법에 대한 자세한 지침은 foundational 플로우 개발 가이드를 참조하세요. Foundational 플로우는 ee/app/models/ai/catalog/foundational_flow.rb의 모놀리스에 정의되고 GitLab Duo Workflow Service에서 구현됩니다.
Agent#
Agent는 AI 모델로 구동되는 자율적이고 페르소나 같은 소프트웨어 구성 요소입니다. 에이전트는 GitLab 에코시스템에서 사용자 또는 시스템을 대신하여 특정 작업 또는 작업 세트를 수행합니다.
Agent 유형#
- Foundational: GitLab이 유지 관리하는 플랫폼 네이티브 에이전트로, 일반적이거나 크로스 워크플로우 인텔리전스를 제공합니다.
목적: 제품 전반에 걸쳐 접근 가능한 기본 기능을 제공하여 일관된 품질, 안전성, 거버넌스를 보장합니다.
-
호출 방법: Foundational Agent는 GitLab Duo Chat에서만 호출할 수 있습니다.
-
예시: 채팅에서 취약점에 대한 질문에 답하는 GitLab Duo Security Analyst Chat Agent.
-
Custom: 사용자가 AI Catalog을 통해 구축합니다.
목적: 팀이 GitLab 가이드레일 내에서 독점적인 지식, 도구, 의사결정 로직을 활용할 수 있게 합니다.
-
호출 방법: Custom Agent는 GitLab Duo Chat에서만 호출할 수 있습니다.
-
예시: 코드베이스에 대한 질문에 답하기 위해 특별히 생성된 에이전트.
-
External: "서드파티 플로우(Third-Party Flows)" 또는 "CLI 에이전트(CLI Agents)"라고도 합니다. GitLab Duo Agent Platform에 통합된 외부에서 개발된 에이전트입니다.
목적: 외부 벤더가 GitLab 워크플로우 오케스트레이션 및 정책 레이어에서 운영할 수 있도록 허용하여 플랫폼 기능을 확장합니다.
-
호출 방법: External Agent는 댓글에서
@멘션을 통해 또는 이슈, 에픽, 머지 리퀘스트 할당을 통해 호출됩니다. GitLab Duo Chat을 통해서는 호출할 수 없습니다. -
예시: 코드 생성 또는 리뷰를 위해 통합된 Amazon Q 또는 Claude.
Agent 실행#
Custom 및 foundational 에이전트는 GitLab Duo Chat 인터페이스에서 실행할 수 있습니다.
External 에이전트는 트리거로 구성할 수 있습니다.
에이전트 사용 시기#
에이전트는 코드 설명, 이슈 요약, 콘텐츠 생성, 또는 추천 제공과 같이 추론과 자연어 상호작용이 필요한 온디맨드, 인터랙티브, 또는 컨텍스트 특화 작업에 가장 적합합니다. 사전 정의된 반복 가능한 워크플로우보다 유연성과 사람의 참여가 필요한 의사결정이 요구될 때 이상적입니다.
Session#
에이전트 또는 플로우가 트리거된 후 시작되는 에이전트 또는 플로우의 컨텍스트 런타임 상태입니다. 세션 중에 에이전트는 작업을 완료하기 위한 액션을 수행합니다. 에이전트는 진화하는 컨텍스트에 대해 추론하고 상호작용 전반에 걸쳐 연속성을 유지합니다. 예를 들어, 리팩토링 시퀀스의 이전 단계 또는 코드 수정의 근거를 기억합니다.
GitLab UI에서 세션은 다음을 캡처합니다:
-
상태 (예: 실행 중, 완료, 입력 대기 중 등)
-
대화 이력
-
시스템 상태 (예: 프로젝트 메타데이터, 머지 리퀘스트 콘텐츠)
Tool#
에이전트(또는 플로우 단계)가 읽기 또는 쓰기 액션을 수행하기 위해 호출하는 결정론적인 이산 기능입니다. 도구는 MCP 또는 다른 프로토콜을 통해 GitLab 또는 서드파티 애플리케이션에서 이러한 작업을 수행하는 데 사용될 수 있습니다.
예시: GitLab 이슈 읽기, 리포지터리 클론, 변경 사항 커밋 및 푸시, REST API 호출. 도구는 데이터 또는 부수 효과를 노출하며, 도구 자체는 어떠한 추론도 수행하지 않습니다.
Trigger#
Flow를 시작하거나 External Agent를 활성화하는 이벤트입니다. 트리거는 프로젝트 단위로 각 External Agent 또는 Flow에 대해 생성됩니다. 플로우를 실행하려면 해당 프로젝트의 External Agent 또는 Flow에 대해 트리거가 구성되어 있어야 합니다.
이벤트에는 다음이 포함됩니다:
-
시스템 이벤트 (예: 새 머지 리퀘스트 열림, CI job 실패)
-
사용자 프롬프트 또는 액션 (예: 이슈에서
@멘션, 이슈 할당) -
시간 기반 (예: 매일 18:00, 매주 월요일) (계획됨)
많은 트리거를 생성하여 플로우를 시작할 수 있지만, External Agent에 대해서는 두 가지 트리거(@ 멘션과 이슈 할당)만 사용 가능합니다.
지원 용어#
| 용어 | 정의 |
|---|---|
| Node (Flow node) | 플로우 그래프에서 하나의 단계입니다. GitLab은 현재 Agent, Tool Executor, Agent Handover, Supervisor, Terminator 노드를 지원합니다. |
| Task | 실행 내의 작업 단위를 나타내는 공식 객체입니다. 현재는 Executor 에이전트만 작업을 영속화하지만, 개념은 확장 가능합니다. |
| Agent handover | 한 에이전트의 컨텍스트를 패키징하여 다른 에이전트에게 전달하는 노드 유형입니다. |
| Supervisor agent | 다른 에이전트의 진행 상황을 모니터링하고 실행 수준의 제약(타임아웃, 최대 토큰 수 등)을 적용하는 에이전트 노드입니다. |
| Subagent | 동일한 실행 내에서 Supervisor 아래에서 운영되는 에이전트의 약칭입니다. |
| Autonomous agent | 사람의 승인 없이 루프를 실행할 수 있는 에이전트의 역사적 용어입니다. GitLab에서 자율성 수준은 별도의 에이전트 유형이 아닌 플로우 설계에 의해 결정됩니다. |
| Framework | 다중 에이전트 시스템을 구축하기 위한 플랫폼입니다. GitLab Duo Agent Platform은 에이전트 그래프를 네이티브로 모델링하는 LangChain의 확장인 LangGraph를 사용합니다. |
빠른 참조 매트릭스#
| 레이어 | 사람과의 유사점 | 핵심 질문 |
|---|---|---|
| Tool | 기능 | "내가 수행할 수 있는 구체적인 액션은 무엇인가?" |
| Agent | 스킬 / 전문가 | "내 도구를 사용하여 목표에 어떻게 도달하는가?" |
| Flow | 역량 / 직무 | "언제 그리고 어떤 순서로 스킬을 적용해야 가치를 창출할 수 있는가?" |
AI 컨텍스트 용어#
Advanced context resolver#
Advanced context는 열린 파일 탭, 임포트, 의존성, 크로스 파일 심볼 및 정의, 프로젝트 전반의 관련 코드 스니펫을 포함하여 단일 파일을 넘어서는 포괄적인 코드 관련 정보 집합입니다.
Advanced context resolver는 위의 advanced context를 수집하도록 설계된 시스템입니다. Advanced context를 제공함으로써, 리졸버는 LLM에 프로젝트 구조에 대한 보다 전체적인 이해를 제공하여, 더 정확하고 컨텍스트를 인식하는 코드 제안 및 생성을 가능하게 합니다.
AI context abstraction layer#
GitLab에서 여러 벡터 데이터베이스에 걸쳐 RAG(Retrieval Augmented Generation)를 위한 통합 인터페이스를 제공하는 Ruby gem입니다. 이 시스템은 Elasticsearch, OpenSearch, pgvector를 사용하는 PostgreSQL 간의 차이점을 추상화하여, 기반 스토리지 솔루션에 관계없이 AI 기능이 작동할 수 있게 합니다.
핵심 구성 요소에는 데이터 스키마와 직렬화를 처리하는 참조 클래스를 정의하는 컬렉션, 스키마 관리를 위한 마이그레이션, 임베딩 생성을 위한 전처리기가 포함됩니다. 이 레이어는 다운타임 없이 서로 다른 LLM 간의 자동 모델 마이그레이션, Redis 기반 큐를 통한 비동기 처리, 자동 교정 기능이 있는 권한 인식 검색을 지원합니다.
이 아키텍처는 벤더 종속성을 방지하고 Elasticsearch 없이도 pgvector를 통해 RAG 기반 기능에 접근할 수 있게 해줍니다.
AI context policies#
LLM에 컨텍스트 정보로 전송될 수 있는 콘텐츠에 대한 정밀한 제어를 허용하는 사용자 정의 및 사용자 관리 메커니즘입니다. GitLab에는 AI Context Policies의 형식을 제안하는 아키텍처 문서가 있습니다.
Codebase as chat context#
사용자가 /include 명령을 사용하여 명시적으로 제공하는 리포지터리를 말합니다. 사용자는 리포지터리 내의 디렉터리를 선택하여 범위를 좁힐 수 있습니다.
이 기능을 사용하면 사용자가 전체 리포지터리 또는 특정 디렉터리를 선택하여 해당 리포지터리의 하위 집합에 대해 질문할 수 있습니다.
이것은 포함된 리포지터리의 Code Embeddings에 대한 사용자 질문의 의미론적 검색을 수행함으로써 자동으로 향상되며, 검색 결과가 LLM에 전송되는 컨텍스트에 추가됩니다. 이를 통해 LLM은 사용자의 질문에 특별히 타깃팅된 포함된 리포지터리 또는 디렉터리에 대한 정보를 얻어, 더 유용한 응답을 생성할 수 있습니다.
이 아키텍처 문서는 Code Embeddings에 대한 의미론적 검색으로 향상된 Codebase as Chat Context를 제안합니다.
향후에는 리포지터리 또는 디렉터리 컨텍스트가 Knowledge Graph 검색으로도 향상될 수 있습니다.
Code embeddings#
Code Embeddings 이니셔티브는 리포지터리의 파일에 대한 벡터 임베딩 표현을 구축하는 것을 목표로 합니다. 파일 콘텐츠는 논리적 세그먼트로 청크(chunk)된 후, 청크된 콘텐츠에 대한 임베딩이 생성되어 벡터 스토어에 저장됩니다.
Code Embeddings를 사용하면 주어진 리포지터리에 대한 의미론적 검색을 수행할 수 있으며, 검색 결과는 LLM을 위한 추가 컨텍스트로 사용됩니다. (Code Embeddings가 GitLab Duo Chat에서 어떻게 사용될지는 Codebase as Chat Context를 참조하세요.)
GitLab Zoekt#
전통적인 검색을 넘어 다양한 AI 컨텍스트 사용 사례를 지원하는 유연한 아키텍처를 갖춘 확장 가능한 정확한 코드 검색 서비스 및 파일 기반 데이터베이스 시스템입니다. 오픈 소스 코드 검색 엔진 Zoekt를 기반으로 구축되었습니다.
이 시스템은 인덱서 및 웹서버 모드 모두에서 작동할 수 있는 통합된 gitlab-zoekt 바이너리로 구성되어 있으며, 빠른 검색을 위해 영구 스토리지에서 인덱스 파일을 관리합니다. 주요 기능에는 GitLab과의 양방향 통신 및 쉬운 확장을 위한 자기 등록 노드 아키텍처가 포함됩니다.
이 시스템은 엔터프라이즈 규모 배포를 처리하도록 설계되어 있으며, GitLab.com은 48 TiB 이상의 인덱싱된 데이터를 성공적으로 운영하고 있습니다.
이 분산 데이터베이스 시스템은 Knowledge Graph를 구동하는 데 사용될 가능성이 높습니다. 또한 GitLab Duo에 추가적인 컨텍스트 및/또는 도구를 제공하기 위해 정확한 코드 검색을 활용할 수도 있습니다.
Knowledge graph#
Knowledge Graph 프로젝트는 AI 기능을 구동하고 GitLab 내에서 개발자 생산성을 향상시키기 위해 코드 리포지터리에서 구조화된 쿼리 가능한 그래프 데이터베이스를 생성하는 것을 목표로 합니다.
어떤 함수가 다른 함수를 호출하는지, 클래스들이 서로 어떻게 관련되는지, 코드베이스 전체에서 변수가 어디에 사용되는지를 보여주는 상세한 청사진을 만드는 것과 같다고 생각하면 됩니다. GitLab Duo가 무언가를 물어볼 때마다 수천 개의 파일을 읽어야 하는 대신, 이 사전 구축된 맵을 빠르게 탐색하여 더 나은 코드 제안을 제공하고, 관련 코드 스니펫을 찾거나, 문제 디버깅에 도움을 줄 수 있습니다. 이는 GitLab Duo가 코드베이스를 훨씬 더 스마트하게 이해할 수 있게 하여 코드 리뷰, 리팩토링, 또는 기능 작업 시 변경해야 할 곳을 찾는 것과 같은 작업에서 더 효과적으로 도움을 줄 수 있게 합니다.
One parser (GitLab Code Parser)#
GitLab Code Parser는 단일하고 효율적이며 신뢰할 수 있는 정적 코드 분석 라이브러리를 구축합니다. 이 라이브러리는 서버 측 인덱싱(Knowledge Graph, Embeddings)부터 클라이언트 측 분석(Language Server, Web IDE)까지 GitLab 전반에 걸쳐 다양한 코드 인텔리전스 기능의 기반으로 사용될 것입니다. 초기에는 AI 및 편집기 기능에 한정됩니다.
Supplementary user context#
사용자가 기본 AI 컨텍스트를 확장하기 위해 로컬 환경에서 제공하는 IDE의 열린 탭, 파일, 폴더와 같은 정보입니다. 이것은 내부적으로 "고정된 컨텍스트(pinned context)"라고도 합니다. GitLab Duo Chat 사용자는 /include 명령으로 보조 사용자 컨텍스트를 제공할 수 있습니다(IDE 전용).
GitLab 라이선스 및 구독 용어#
Add-on#
GitLab 구독에 구매하여 추가할 수 있는 추가 기능 또는 서비스입니다. 예시:
-
GitLab Duo Core: 네임스페이스 수준에서 할당되는 기본 AI 기반 기능
-
GitLab Duo Pro: 개별 사용자를 위한 고급 AI 기반 기능
-
GitLab Duo Enterprise: 추가적인 보안 및 컴플라이언스 기능이 포함된 엔터프라이즈 수준 AI 기능
User add-on assignment#
개별 사용자에게 add-on 기능을 할당하는 프로세스입니다. GitLab Duo Pro 및 GitLab Duo Enterprise와 같은 대부분의 add-on의 경우, 이는 직접적인 사용자-add-on 관계를 생성합니다.
그러나 GitLab Duo Core는 네임스페이스 수준에서 할당되므로 예외입니다. GitLab.com에서 GitLab Duo Core 사용자 접근은 사용자가 GitLab Duo Core가 켜진 네임스페이스의 멤버십을 가지고 있는지 확인하여 결정됩니다. 다른 인스턴스에서 GitLab Duo Core 사용자 접근은 해당 인스턴스에 GitLab Duo Core가 켜져 있는지 확인하여 결정됩니다.
License#
특히 Self-Managed GitLab 인스턴스에 사용되는 라이선스 파일을 말합니다. 라이선스 파일은 셀프 매니지드 설치에서 유료 티어 기능(Premium 또는 Ultimate)을 활성화하기 위해 업로드됩니다. 셀프 매니지드 고객은 구독(지불하는 것)과 라이선스 파일(기능을 활성화하기 위해 업로드하는 것) 모두를 가집니다.
Subscription#
고객이 사용하는 티어 수준을 말하며, 사용 가능한 기능을 결정합니다:
-
Free: 무료로 제공되는 기본 GitLab 기능
-
Premium: 팀 및 조직을 위한 중간 티어 기능
-
Ultimate: 고급 보안, 컴플라이언스, 계획 도구가 포함된 완전한 기능 티어
구현은 배포 유형에 따라 다릅니다:
-
SaaS (GitLab.com): 구독만 필요 - GitLab이 모든 것을 관리하므로 라이선스 파일 불필요
-
Self-managed: 구독(청구)과 라이선스 파일(기능 활성화) 모두 필요
-
Community/Education: 자격을 갖춘 조직(학교, 오픈 소스 프로젝트)을 위한 특별 무료 구독으로, 무료로 유료 티어 기능을 제공합니다.