중국어版文档
RAG(Retrieval Augmentation Generation) 기술은 도메인 애플리케이션과 대규모 언어 모델의 통합을 촉진합니다. 그러나 RAG는 벡터 유사성과 지식 추론 상관관계 사이의 큰 격차, 지식 논리(수치, 시간 관계, 전문가 규칙 등)에 대한 둔감 등의 문제가 있어 전문 지식 서비스 구현을 방해한다.
2024년 10월 24일 OpenSPG는 v0.5를 출시하여 KAG(지식 증강 생성)의 전문 도메인 지식 서비스 프레임워크를 공식 출시했습니다. KAG는 지식 그래프와 벡터 검색의 장점을 최대한 활용하고 RAG 과제를 해결하기 위해 다음 네 가지 측면을 통해 대규모 언어 모델과 지식 그래프를 양방향으로 향상시키는 것을 목표로 합니다. (1) LLM 친화적인 지식 표현, (2) 지식 그래프 및 원본 텍스트 조각 간의 상호 색인, (3) 논리적 형식에 따라 안내되는 하이브리드 추론 엔진, (4) 의미 추론과 지식 정렬.
KAG는 다중 홉 질문 및 답변 작업에서 NaiveRAG, HippoRAG 및 기타 방법보다 훨씬 뛰어납니다. hotpotQA의 F1 점수는 상대적으로 19.6% 증가했고, 2wiki의 F1 점수는 상대적으로 33.5% 증가했습니다. 전자정부 질의응답, e헬스 질의응답 등 앤트그룹의 2가지 전문 지식 질의응답 업무에 KAG를 성공적으로 적용해 RAG 방식에 비해 전문성이 크게 향상됐다.
KAG 프레임워크는 kg-builder, kg-solver 및 kag-model의 세 부분으로 구성됩니다. 이 릴리스에는 처음 두 부분만 포함되어 있으며 kag-model은 향후 점진적으로 오픈 소스 릴리스가 될 것입니다.
kg-builder는 대규모 언어 모델(LLM)에 적합한 지식 표현을 구현합니다. DIKW(데이터, 정보, 지식, 지혜)의 계층적 구조를 기반으로 IT는 SPG 지식 표현 능력을 업그레이드하고, 동일한 지식 유형(예: 개체 유형)에 대해 스키마 제약 없는 정보 추출 및 스키마 제약이 있는 전문 지식 구축과 호환됩니다. 및 이벤트 유형), 그래프 구조와 원본 텍스트 블록 간의 상호 인덱스 표현도 지원하여 추론 문답 단계의 효율적인 검색을 지원합니다.
kg-solver는 계획, 추론, 검색의 세 가지 유형의 연산자를 포함하는 논리적 기호 기반 하이브리드 해결 및 추론 엔진을 사용하여 자연어 문제를 언어와 기호를 결합하는 문제 해결 프로세스로 변환합니다. 이 프로세스에서 각 단계는 정확한 일치 검색, 텍스트 검색, 수치 계산 또는 의미 추론과 같은 다양한 연산자를 사용하여 검색, 지식 그래프 추론, 언어 추론 및 수치 계산의 네 가지 문제 해결 프로세스의 통합을 실현할 수 있습니다. .
개인 지식 기반의 맥락에서는 비정형 데이터, 정형 정보 및 비즈니스 전문가 경험이 공존하는 경우가 많습니다. KAG는 DIKW 계층 구조를 참조하여 SPG를 LLM에 적합한 버전으로 업그레이드합니다. 뉴스, 이벤트, 로그, 서적 등의 비정형 데이터와 거래, 통계, 승인 등의 정형 데이터와 비즈니스 경험, 도메인 지식 규칙에 대해 KAG는 레이아웃 분석, 지식 추출, 속성 정규화, 원시 비즈니스 데이터와 전문가 규칙을 통합된 비즈니스 지식 그래프로 통합하는 의미론적 정렬입니다.
이를 통해 동일한 지식 유형(예: 엔터티 유형, 이벤트 유형)에 대한 스키마 없는 정보 추출 및 스키마 제약 전문 지식 구축과 호환되며, 그래프 구조와 원본 텍스트 블록 간의 교차 인덱스 표현을 지원합니다. . 이러한 상호 인덱스 표현은 그래프 구조를 기반으로 한 역 인덱스 구성에 도움이 되며, 논리적 형태의 통일된 표현과 추론을 촉진합니다.
KAG는 논리적으로 정형화된 하이브리드 솔루션과 추론 엔진을 제안합니다. 엔진에는 계획, 추론, 검색이라는 세 가지 유형의 연산자가 포함되어 자연어 문제를 언어와 표기법을 결합하는 문제 해결 프로세스로 변환합니다. 이 프로세스에서 각 단계는 정확한 일치 검색, 텍스트 검색, 수치 계산 또는 의미 추론과 같은 다양한 연산자를 사용하여 검색, 지식 그래프 추론, 언어 추론 및 수치 계산의 네 가지 문제 해결 프로세스의 통합을 실현할 수 있습니다. .
최적화 후 수직분야에서 KAG의 적응성을 검증했을 뿐만 아니라, 일반 데이터셋의 멀티홉 질의응답에서 기존 RAG 방법과 비교하였다. 우리는 F1이 2wiki에서 33.5%, hotpotQA에서 19.6% 증가하여 SOTA 방법보다 확실히 더 낫다는 것을 발견했습니다. 우리는 이 프레임워크를 지속적으로 개선하고 있으며 엔드투엔드 실험과 절제 실험 지표를 통해 그 효과를 입증했습니다. 우리는 논리 기호 기반 추론과 개념적 정렬을 통해 이 프레임워크의 유효성을 입증합니다.
'도박 APP' 식별 규칙 정의
RiskAppTaxo 규칙 정의
Define (s:App)-[p:belongTo]->(o:`TaxOfRiskApp`/`GamblingApp`) {
Structure {
(s)
}
Constraint {
R1("risk label marked as gambling") s.riskMark like "%Gambling%"
}
}
"앱 개발자" 식별 규칙 정의
앱 개발자 규칙 정의
Define (s:Person)-[p:developed]->(o:App) {
Structure {
(s)-[:hasDevice]->(d:Device)-[:install]->(o)
}
Constraint {
deviceNum = group(s,o).count(d)
R1("device installed same app"): deviceNum > 5
}
}
"도박 앱 개발자" 식별 규칙을 정의합니다.
도박 앱 규칙의 RiskUser 정의
Define (s:Person)-[p:belongTo]->(o:`TaxOfRiskUser`/`DeveloperOfGamblingApp`) {
Structure {
(s)-[:developed]->(app:`TaxOfRiskApp`/`GamblingApp`)
}
Constraint {
}
}
추론 과정의 주요 단계는 다음과 같습니다.
자연어 문제를 프로젝트의 개념 모델링에 의존하는 실행 가능한 논리 표현으로 변환하고 Black 제품 마이닝 문서를 참조합니다.
변환된 논리식을 OpenSPG 추론기에 제출하여 실행하면 사용자 분류 결과를 얻을 수 있습니다.
사용자의 분류 결과에 대한 답변을 생성합니다.
KAG는 OpenSPG 개념 모델링과 결합하여 자연어 변환 그래프 쿼리의 난이도를 줄이고 데이터 중심 변환을 분류 개념 중심 변환으로 변경하며 원본 OpenSPG 프로젝트에서 자연어 질문 및 답변의 현장 적용을 신속하게 실현할 수 있습니다.
권장 시스템 버전:
macOS User:macOS Monterey 12.6 or later
Linux User:CentOS 7 / Ubuntu 20.04 or later
Windows User:Windows 10 LTSC 2021 or later
소프트웨어 요구 사항:
macOS / Linux User:Docker,Docker Compose
Windows User:WSL 2 / Hyper-V,Docker,Docker Compose
다음 명령을 사용하여 docker-compose.yml 파일을 다운로드하고 Docker Compose로 서비스를 시작합니다.
# HOME 환경 변수를 설정합니다(Windows 사용자만 이 명령을 실행해야 합니다)# set HOME=%USERPROFILE%curl -sSL https://raw.githubusercontent.com/OpenSPG/openspg/refs/heads/master/dev/release/ docker-compose.yml -o docker-compose.yml 도커 작성 -f docker-compose.yml up -d
브라우저를 사용하여 KAG 제품의 기본 URL로 이동합니다: http://127.0.0.1:8887
자세한 소개는 제품 가이드를 참조하세요.
엔진 및 종속 이미지 설치를 완료하려면 3.1 섹션을 참조하세요.
macOS / Linux 개발자
# Create conda env: conda create -n kag-demo python=3.10 && conda activate kag-demo
# Clone code: git clone https://github.com/OpenSPG/KAG.git
# Install KAG: cd KAG && pip install -e .
Windows 개발자
# Install the official Python 3.8.10 or later, install Git.
# Create and activate Python venv: py -m venv kag-demo && kag-demoScriptsactivate
# Clone code: git clone https://github.com/OpenSPG/KAG.git
# Install KAG: cd KAG && pip install -e .
툴킷에 대한 자세한 소개는 빠른 시작 가이드를 참조하세요. 그런 다음 기본 제공 구성 요소를 사용하여 기본 제공 데이터 세트의 성능 결과를 재현하고 해당 구성 요소를 새로운 비즈니스 시나리오에 적용할 수 있습니다.
KAG에서 제공하는 내장 구성 요소가 요구 사항을 충족하지 않는 경우 kag-builder 및 kag-solver 구현을 직접 확장할 수 있습니다. KAG-Builder Extension 및 KAG-Solver Extension을 참조하세요.
KAG는 BuilderChain을 사용하여 리더, 스플리터, 매핑, 추출기, 정렬기 및 벡터라이저와 같은 구성 요소를 연결합니다. 개발자는 kag가 사전 정의한 BuilderChain을 사용하여 그래프 구성을 완료하거나 사전 정의된 구성 요소를 조립하고 BuilderChain을 얻을 수 있습니다.
동시에 개발자는 빌더의 구성 요소를 사용자 정의하고 실행을 위해 BuilderChain에 포함할 수 있습니다.
kag
├──interface
│ ├── builder
│ │ ├── aligner_abc.py
│ │ ├── extractor_abc.py
│ │ ├── mapping_abc.py
│ │ ├── reader_abc.py
│ │ ├── splitter_abc.py
│ │ ├── vectorizer_abc.py
│ │ └── writer_abc.py
kag-solver는 추론기, 생성기 및 반사기 구성 요소로 구성된 솔버 파이프라인을 실행합니다. KAG는 기본 추론기, 생성기, 반사기를 제공합니다. 개발자는 다음 API를 기반으로 사용자 정의 구현을 제공할 수도 있습니다.
kag
├── solver
│ ├── logic
│ │ └── solver_pipeline.py
├── interface
├── retriever
│ ├── chunk_retriever_abc.py
│ └── kg_retriever_abc.py
└── solver
├── kag_generator_abc.py
├── kag_memory_abc.py
├── kag_reasoner_abc.py
├── kag_reflector_abc.py
└── lf_planner_abc.py
KAG는 Qwen/DeepSeek/GPT 등 OpenAI 서비스와 호환되는 MaaS API와의 도킹을 지원하며, vLLM/Ollama가 배포한 로컬 모델과의 도킹도 지원합니다. 개발자는 llm_client 인터페이스를 기반으로 사용자 정의 모델 서비스에 대한 지원을 추가할 수 있습니다.
kag
├── common
├── llm
├── client
│ ├── llm_client.py
│ ├── ollama_client.py
│ ├── openai_client.py
│ ├── vllm_client.py
KAG는 Ollama에서 배포한 OpenAI 임베딩 서비스, bge-m3 모델을 포함하여 OpenAI 표현 모델 등의 호출을 지원합니다. 또한 로컬 임베딩 모델 로드 및 사용도 지원합니다.
kag
├── common
├── vectorizer
│ ├── vectorizer.py
│ ├── openai_vectorizer.py
│ ├── local_bge_m3_vectorizer.py
│ ├── local_bge_vectorizer.py
다른 프레임워크와 통합되면 외부 비즈니스 데이터 및 전문 지식을 입력으로 사용하여 kag-builder 파이프라인을 호출하여 지식 그래프 구성을 완료할 수 있습니다. 또한 kag-solver를 호출하여 Q&A 추론 과정을 완료할 수 있으며, 추론 결과와 중간 과정이 비즈니스 시스템에 공개됩니다.
다른 프레임워크가 kag를 통합하는 방식은 다음과 같이 간단히 설명할 수 있습니다.
도메인 개념 그래프와 엔터티 그래프의 융합을 실현하기 위한 도메인 지식 주입
KG 구축 및 Q&A 효율성 향상을 위한 kag 모델 최적화
환각 지식의 억제 논리 제약
이 소프트웨어를 사용하는 경우 아래와 같이 인용해 주십시오.
KAG: 지식 증강 생성을 통해 전문 분야의 LLM 강화
KGFabric: 기업 데이터 상호 연결을 위한 확장 가능한 지식 그래프 웨어하우스
@article{liang2024kag, title={KAG: 지식 증강 세대를 통한 전문 분야의 LLM 강화}, 저자={Liang, Lei and Sun, Mengshu and Gui, Zhengke and Zhu, Zhongshu and Jiang, Zhouyu and Zhong, Ling and Qu, Yuan and Zhao, Peilong and Bo, Zhongpu and Yang, Jin 외}, Journal={arXiv preprint arXiv:2409.13731}, year={2024}}@article{yikgfabric, title={KGFabric: 기업을 위한 확장 가능한 지식 그래프 웨어하우스 데이터 상호 연결}, 작성자={Yi, Peng 및 Liang, Lei 및 Da Zhang, Yong Chen 및 Zhu, Jinye 및 Liu, Xiangyu 및 Tang, Kun 및 Chen, Jialin 및 Lin, Hao 및 Qiu, Leijie 및 Zhou, Jun}}
아파치 라이센스 2.0