codeqai: 코드를 활용한 데이터셋 생성 및 코드베이스 검색/채팅 도구
요약
코드 기반의 데이터셋 생성, 의미론적 검색, 코드 채팅 기능을 제공하는 도구입니다. Alpaca 형식 등 다양한 포맷으로 파인튜닝 데이터를 만들고, 벡터 DB를 최신 코드로 초고속 동기화할 수 있습니다. 100% 로컬 지원을 통해 보안 걱정 없이 개발 워크플로우에 통합됩니다.
핵심 포인트
- 파인튜닝 데이터셋 생성: Alpaca 등 다양한 형식으로 코드 데이터를 추출합니다.
- 의미론적 검색 및 채팅: 코드베이스를 의미적으로 검색하거나 GPT와 유사하게 대화할 수 있습니다.
- 로컬 우선 보안: 100% 로컬 임베딩/LLM 지원으로 데이터 유출 위험이 없습니다.
- 기술 스택: langchain, treesitter, faiss 등 최신 개발 라이브러리를 활용합니다.
코드로부터 파인튜닝(finetuning)용 데이터셋을 생성하고, 코드베이스를 의미론적으로 검색하거나 CLI에서 코드로 채팅할 수 있습니다. 벡터 데이터베이스를 최신 코드 변경 사항에 맞춰 초고속으로 업데이트합니다.
100% 로컬 지원으로 데이터 유출 걱정이 없습니다.
직접 구축된 기술 스택:
langchain, treesitter, sentence-transformers, instructor-embedding,
faiss, lama.cpp, Ollama, Streamlit.
주요 기능:
- 🗒️ 파인튜닝 데이터셋 생성 (Finetuning dataset generation)
- Alpaca, 대화형(conversational), 명령어(instruction) 또는 완성(completion) 형식으로 내보내기
- 🔎 의미론적 코드 검색 (Semantic code search)
- 💬 코드베이스에 대한 GPT와 유사한 채팅 기능
- ⚙️ 벡터 스토어와 최신 코드 변경 사항을 쉽게 동기화
- 💻 100% 로컬 임베딩 및 LLM 지원
- sentence-transformers, instructor-embeddings, llama.cpp, Ollama
- 🌐 OpenAI, Azure OpenAI, Anthropic 지원
- 🌳 Treesitter 통합
참고 사항 (Note)
코드가 잘 문서화되어 있을수록 더 좋은 결과를 얻을 수 있습니다. 코드 문서 생성을 위해 doc-comments-ai를 고려해 볼 수 있습니다.
codeqai dataset
Alpaca와 같은 다른 형식으로 내보내기:
codeqai dataset --format alpaca
모델 증류(model distillation)를 사용하여 데이터셋 내보내기:
codeqai dataset --distillation doc
codeqai search
codeqai chat
codeqai sync
codeqai app
참고 사항 (Note)
최초 사용 시, 리포지토리는 설정된 임베딩 모델로 인덱싱되며 시간이 다소 걸릴 수 있습니다.
- Python >=3.9,<3.12
pipx를 사용하여 격리된 환경에 설치하세요:
pipx install codeqai
⚠ pipx가 Python >=3.9,<3.12를 사용하도록 확인하십시오.
pipx로 특정 Python 버전을 명시적으로 지정하려면, 원하는 Python 버전(예: pyenv shell 3.X.X)을 활성화한 후 다음 명령어로 설치하세요:
pipx install codeqai --python $(which python)
만약 pipx 사용에 계속 문제가 발생한다면, PyPI를 통해 소스에서 직접 설치할 수도 있습니다:
pip install codeqai
하지만 의존성(dependencies)의 격리된 환경을 활용하기 위해 pipx 사용이 권장됩니다.
설치 중 알려진 문제에 대한 해결책은 트러블슈팅(Troubleshooting) 섹션을 방문하십시오.
참고 사항 (Note)
일부 패키지는 기본적으로 설치되지 않습니다. 처음 사용할 때 faiss-cpu 또는 faiss-gpu를 설치하라는 메시지가 표시됩니다.
Faiss-gpu는 하드웨어가 CUDA 7.5 이상을 지원하는 경우 권장됩니다.
로컬 임베딩 및 LLM을 사용하는 경우, sentence-transformers, instructor 또는 llama.cpp를 추가로 설치하도록 요청받게 됩니다.
처음 사용하거나 다음 명령어를 실행하여
codeqai configure
하면 구성 프로세스가 시작되며, 여기서 임베딩 모델과 LLM을 선택할 수 있습니다.
중요 사항
구성에서 나중에 임베딩 모델을 변경하려면 ~/.cache/codeqai에 캐시된 파일을 삭제해야 합니다. 이후 벡터 스토어 파일이 최근 구성된 임베딩 모델로 다시 생성됩니다. 유사성 검색은 모델이 다르면 작동하지 않기 때문에 이 과정이 필요합니다.
원격 모델을 사용하는 경우, 다음 환경 변수가 필요합니다. 필요한 환경 변수가 이미 설정되어 있으면 사용되며, 그렇지 않은 경우 입력하라는 메시지가 표시되고 이는 ~/.config/codeqai/.env에 저장됩니다.
export OPENAI_API_KEY = "your OpenAI api key"
export OPENAI_API_TYPE = "azure"
export AZURE_OPENAI_ENDPOINT = "https://<your-endpoint>.openai.azure.com/"
export OPENAI_API_KEY = "your Azure OpenAI api key"
...
export ANTHROPIC_API_KEY="your Anthropic api key"
참고
환경 변수를 나중에 변경하려면 ~/.config/codeqai/.env를 수동으로 업데이트하세요.
- Python
- Typescript
- Javascript
- Java
- Rust
- Kotlin
- Go
- C++
- C
- C#
- Ruby
전체 git 저장소는 treesitter로 파싱되어 문서화된 모든 메서드를 추출하고, sentence-transformers, instructor-embeddings 또는 OpenAI의 text-embedding-ada-002를 사용하여 로컬 FAISS 벡터 데이터베이스에 저장됩니다. 이 벡터 데이터베이스는 시스템 파일에 저장되며 추후 사용 시 다시 로드됩니다. 이후 임베딩 모델을 기반으로 코드베이스에 대한 의미론적 검색(semantic search)이 가능합니다.
코드베이스와 로컬에서 채팅하려면 원하는 모델을 지정하여 llama.cpp 또는 Ollama를 사용합니다.
리포지토리의 최신 변경 사항을 동기화하기 위해 각 파일의 git 커밋 해시와 벡터 ID가 캐시에 저장됩니다.
벡터 데이터베이스를 최신 git 상태로 동기화할 때, 캐시된 커밋 해시는 리포지토리 내 각 파일의 현재 git 해시와 비교됩니다.
만약 git 커밋 해시가 다르면, 관련 벡터는 데이터베이스에서 삭제되고 벡터 임베딩을 다시 생성한 후 재삽입됩니다.
llama.cpp를 사용하는 경우 지정된 모델이 사전에 시스템에 준비되어 있어야 합니다.
Ollama를 사용하는 경우 원하는 모델을 로컬 포트 11434에서 미리 실행 중인 Ollama 컨테이너가 필요합니다.
또한 원격 채팅 모델로 OpenAI 또는 Azure-OpenAI를 사용할 수 있습니다.
huggingface-cli를 설치하고 모델 허브에서 원하는 모델을 다운로드하세요. 예를 들어
huggingface-cli download TheBloke/CodeLlama-13B-Python-GGUF codellama-13b-python.Q5_K_M.gguf
이 명령은 codellama-13b-python.Q5_K_M 모델을 다운로드합니다. 다운로드가 완료되면 모델 .gguf 파일의 절대 경로가 콘솔에 출력됩니다.
중요 사항
llama.cpp와 호환되는 모델은 반드시 .gguf 형식이어야 합니다.
-
pip failed to build package: tiktoken Some possibly relevant errors from pip install: error: can't find Rust compiler
Rust 컴파일러가 시스템에 설치되어 있는지 여기에서 확인하세요. -
× Building wheel for faiss-cpu (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [12 lines of output] running bdist_wheel ... note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for faiss-cpu Failed to build faiss-cpu ERROR: Could not build wheels for faiss-cpu, which is required to install pyproject.toml-based projects
codeqai가 Python <3.12 버전으로 설치되어 있는지 확인하세요. Python 3.12용 faiss 휠은 아직 없습니다.
기능이 부족하거나 버그를 발견했다면 주저하지 말고 이슈(issue)를 열거나 PR을 제출해 주세요. 어떤 종류의 기여든 매우 환영합니다!
개발 모드에서 프로젝트를 빌드하고 실행하려면 conda, conda-lock 또는 poetry가 설치되어 있는지 확인하세요.
conda를 사용하는 경우 다음 명령어를 실행하세요:
conda env create -f environment.yml -n codeqai
또는 conda-lock을 사용하는 경우 다음 명령어를 실행하세요:
conda-lock install --name codeqai conda-<YOUR_PLATFORM>.lock
환경을 활성화하고 종속성(dependencies)을 설치하려면 다음 명령어를 사용하세요:
conda activate codeqai && poetry install
poetry를 사용하는 경우 다음 명령어를 실행하세요:
poetry install && poetry shell
개발 환경 내에서 예를 들어 codeqai chat을 실행하려면 다음 명령어를 사용하세요:
poetry run codeqai chat
테스트는 다음 명령어로 실행할 수 있습니다:
poetry run pytest -s -vv
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기