일반 소개
KBLaM은 Microsoft에서 개발한 오픈 소스 프로젝트로, 정식 명칭은 "지식 기반 증강 언어 모델"(Knowledge Base Augmented Language Model)입니다. 외부 지식을 벡터로 변환하여 대규모 모델의 주의 계층에 포함시켜 모델이 이 지식을 직접 사용하여 질문이나 추론에 답할 수 있도록 합니다. 기존의 검색 증강 생성(RAG)에 비해 추가적인 검색 모듈이 필요하지 않으며, 문맥 학습에 비해 계산 비용이 제곱 단계가 아닌 지식 베이스의 크기에 따라 선형적으로 증가합니다. KBLaM은 GitHub에서 오픈 소스이며 주로 연구자와 개발자를 대상으로 하며 대규모 모델이 외부 정보를 보다 효율적으로 처리하는 방법을 모색하는 데 적합합니다. 현재 Meta의 Llama 제품군 및 Microsoft의 Phi-3와 같은 모델을 지원합니다.

기능 목록
- 모델 향상을 위해 외부 지식 기반을 키-값 벡터 쌍으로 변환합니다.
- 직사각형 주의 메커니즘을 사용하여 대형 모델에 지식 포함하기.
- 모델을 재교육하지 않고도 지식창고를 동적으로 업데이트할 수 있도록 지원합니다.
- 계산 비용은 지식창고의 크기에 따라 선형적으로 증가하며 효율적입니다.
- 오픈 소스 코드, 실험 스크립트 및 데이터 세트를 통해 연구 및 개발을 용이하게 합니다.
- 퀴즈 및 추론과 같은 작업을 지원하며 지식 기반을 기반으로 정확한 답변을 생성할 수 있습니다.
- 기본 모델의 텍스트 처리 기능을 수정하지 않고 원래 성능을 유지합니다.
도움말 사용
KBLaM은 코드와 설명서가 포함된 리서치 오픈 소스 도구로, GitHub를 통해 제공됩니다. 아래는 사용자가 빠르게 시작할 수 있도록 자세한 설치 및 사용 가이드를 제공합니다.
설치 프로세스
- 환경 준비하기
Python 3.8 이상 및 Git이 필요하며 Linux 또는 Windows를 권장합니다. 대규모 지식창고로 작업하는 경우에는 NVIDIA GPU(예: 80GB 이상의 비디오 메모리가 있는 A100)를 사용하는 것이 좋습니다. - Warehouse 다운로드
터미널을 열고 명령을 입력합니다. KBLaM 저장소 복제:
git clone https://github.com/microsoft/KBLaM.git
프로젝트 카탈로그로 이동합니다:
cd KBLaM
- 종속성 설치
다음 명령을 실행하여 필요한 라이브러리를 설치합니다:
pip install -e .
그러면 파이토치, 트랜스포머 및 기타 종속성이 설치됩니다. 라마 모델을 사용해야 하는 경우 포옹 얼굴 도구도 설치하고 로그인해야 합니다:
pip install huggingface_hub
huggingface-cli login
로그인하려면 허깅 페이스에서 토큰을 생성해야 합니다.
- 설치 확인
테스트 스크립트를 실행하여 환경이 정상인지 확인합니다:
python -m kblam.test
오류가 보고되지 않으면 설치에 성공한 것입니다.
주요 기능
1. 지식창고 만들기
KBLaM은 외부 지식을 벡터 쌍으로 변환해야 합니다.
- 이동::
- 지식창고 파일(예: JSON 형식)을 준비합니다:
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
- 벡터를 생성합니다:
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
- 지원되는 임베딩 모델은 다음과 같습니다.
text-embedding-ada-002
노래로 응답all-MiniLM-L6-v2
. 출력 파일embeddings.npy
는 지식 벡터입니다.
2. 모델에 지식 포함
대형 모델의 관심 레이어에 지식 벡터를 포함시킵니다.
- 이동::
- 지원되는 모델 다운로드(예
meta-llama/Meta-Llama-3-8B-Instruct
). - 임베드된 스크립트를 실행합니다:
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
- 향상된 모델 카탈로그 내보내기
enhanced_model
.
3. 향상된 모델 테스트
향상 모델을 로드하고 효과를 테스트합니다.
- 이동::
- 테스트 스크립트를 실행합니다:
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
- "AI는 인간의 지능을 시뮬레이션하는 기술입니다."라는 모델이 돌아올 것입니다.
주요 기능 작동
지식창고의 동적 업데이트
KBLaM은 모델을 재교육하지 않고도 언제든지 지식창고를 업데이트할 수 있도록 지원합니다.
- 이동::
- 지식창고 파일을 수정하여 새 항목을 추가합니다:
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
- 새 벡터를 생성합니다:
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
- 모델을 업데이트합니다:
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
- 업데이트된 모델은 즉시 새로운 지식을 사용할 수 있습니다.
교육 어댑터
지식 임베딩 효과를 최적화하기 위한 어댑터 교육.
- 이동::
- 합성 데이터 세트를 사용한 학습:
python train.py --dataset synthetic_data --N 120000 --B 20 --total_steps 601 --encoder_spec OAI --use_oai_embd --key_embd_src key --use_data_aug
- 합성 데이터를 생성하려면 Azure OpenAI 엔드포인트가 필요합니다.
dataset_generation/gen_synthetic_data.py
.
재발 실험
리포지토리에서는 논문 결과를 재현하는 실험 스크립트를 제공합니다.
- 이동::
- 실험 카탈로그로 이동합니다:
cd experiments
- 스크립트를 실행합니다:
python run_synthetic_experiments.py
- 합성 데이터 집합을 생성하려면 Azure OpenAI 키를 구성해야 합니다.
주의
- 모델 지원현재 지원
Meta-Llama-3-8B-Instruct
및Llama-3.2-1B-Instruct
노래로 응답Phi-3-mini-4k-instruct
. 추가 모델을 수정해야 합니다.src/kblam/models
어댑터 코드의 - 하드웨어 요구 사항대용량 지식 베이스를 처리하려면 고성능 GPU가 필요하지만, 소규모 실험은 CPU에서 실행할 수 있습니다.
- 질문 피드백문제 발생 시 다음을 확인하세요.
SUPPORT.md
를 클릭하거나 GitHub에 이슈를 제출하세요.
애플리케이션 시나리오
- 연구 실험
연구자는 KBLaM을 사용하여 화학 분야의 지식 기반을 포함하는 등 대규모 모델이 전문 지식을 처리하는 방식을 테스트하여 모델 답변의 정확도를 향상시킬 수 있습니다. - 기업 Q&A
개발자는 회사 문서를 지식 베이스로 전환하고 지능형 비서를 개발하여 직원이나 고객의 질문에 신속하게 답변할 수 있습니다. - 교육 보조 자료
교사는 KBLaM에 강의 자료를 삽입하여 학생의 질문에 답하고 학습을 향상시키는 도구를 만들 수 있습니다.
QA
- KBLaM은 기존의 미세 조정과 어떻게 다른가요?
KBLaM은 기본 모델을 수정하지 않고 어댑터 임베딩 지식만 학습합니다. 기존의 미세 조정은 전체 모델을 다시 학습시켜야 하므로 비용이 많이 듭니다. - 프로덕션 환경에 적합한가요?
KBLaM은 연구 프로젝트입니다. 지식창고가 학습 데이터와 너무 다를 경우 답변이 부정확할 수 있습니다. 공식적으로는 연구용으로만 사용하실 것을 권장합니다. - KBLaM의 성능을 어떻게 평가하나요?
정확도(지식을 얼마나 정확하게 검색했는지), 거부율(답이 없는 질문을 올바르게 식별했는지), 답변의 정확도 및 회상률로 평가합니다.
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...