문제: 오픈 소스 관리자는 중복/관련 (Doppelgänger) 문제 및 풀 요청을 관리하는 데 많은 시간을 소비합니다.
해결책: Doppelgänger는 새로 제출 된 문제/PR을 기존 문제와 비교하여 중복/관련 (Doppelgänger) 문제/PRS를 자동으로 플래그
주제 : Vector DB, Github, Open-Source, Embedding Search, Rag, 유사성 점수
이 응용 프로그램은 새로 열린 문제를 기존 문제와 자동으로 비교하여 중복을 줄이기 위해 매우 유사한 문제를 닫고 댓글을 달리는 GitHub 앱입니다. 또한, 고려해야 할 사항에 대한 제목 및 설명을 기반으로 PRS에 대한 피드백을 주석에 올립니다.
Doppelganger 문서
각 issue['title'] 및 issue['body'] Minilm-L6-V2를 사용하여 벡터 표현으로 변환됩니다.
각 벡터는 ChromADB 에서 지속되며 ChromADB의 내장 코사인 유사성 검색을 사용하여 유사성 검색을 수행합니다. 각각의 벡터와 함께 issue_id 및 issue['title'] 는 ChromADB의 metadata 인수를 사용하여 저장됩니다.
SIMILARITY_THRESHOLD (즉, "유사한"이라고 생각하는 거리 d )는 구성 가능하며 0과 1 사이의 소수점으로 설정할 수 있습니다 [1].
Doppelganger는 새로 제출 된 문제와 가장 유사한 문제 사이의 코사인 거리 d 임계 값보다 클 때 모든 문제를 종료합니다. 그렇지 않으면 새로 제출 된 문제가 (similarty_threshold*0.5)보다 큰 경우 가장 유사한/관련 문제를 나타내는 유용한 의견을 남길 것입니다.
[1] 코사인 거리
문제 및 풀 요청은 저장소 당 ChromADB 컬렉션에 저장됩니다.
이 저장소를 복제하십시오.
git clone https://github.com/dannyl1u/doppelganger.git
cd doppelganger
종속성 설치 :
pip install -r requirements.txt
새 .env 파일을 만들려면 터미널에서 다음 명령을 실행하십시오.
cp .env.example .env 새로 생성 된 .env 파일을 열고 자체 값으로 다음 변수를 업데이트하십시오.
* APP_ID : 실제 앱 ID로 your_app_id_here 교체하십시오.
* WEBHOOK_SECRET : 실제 webhook 비밀로 your_webhook_secret_here 교체하십시오.
* OLLAMA_MODEL : 선택한 LLM 모델 (예 : "llama3.2")으로 your_chosen_llm_model_here 교체하십시오. 참고 : Ollama 지원 모델이어야합니다 (지원되는 모델의 경우 https://ollama.com/library 참조)
* NGROK_DOMAIN : 4 개가있는 경우 ngrok 도메인으로 your_ngrok_domain_here 교체하십시오. 다운로드 된 개인 키를 프로젝트 루트에 배치하고 rsa.pem 이름을 지정하십시오.
플라스크 응용 프로그램 시작 :
python3 app.py응용 프로그램은 http : // localhost : 4000에서 실행됩니다
우리는 단순성을 위해 ngrok을 사용할 것입니다
옵션 1 : 새 터미널 창에서 공개 URL을 생성 한 후 Ngrok을 시작하여 로컬 서버에 보안 터널을 만듭니다.
ngrok http 4000Ngrok은 공개 URL을 생성합니다 (예 : https://abc123.ngrok.io)
URL에 /webhook , 예를 들어 https://abc123.ngrok.io-> https://abc123.ngrok.io/webhook
다른 터미널 창에서 Ollama를 시작하십시오
ollama run < an OLLAMA model here >옵션 2 : 자신의 ngrok 도메인과 함께 쉘 스크립트 사용
환경 변수가 모두 설정되어 있는지 확인하십시오.
./run-dev.sh일단 설치되면 앱이 자동으로 다음과 같습니다.
스크립트에서 SIMILARITY_THRESHOLD 변수를 수정하여 유사성 임계 값을 조정할 수 있습니다. 기본값은 0.5로 설정됩니다.
rsa.pem 파일이 존재하고 올바르게 형식화되어 있는지 확인하십시오. 기부금을 환영합니다! 풀 요청을 제출하십시오.
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다.