中文版文档
La tecnología Retrieval Augmentation Generation (RAG) promueve la integración de aplicaciones de dominio con grandes modelos de lenguaje. Sin embargo, RAG tiene problemas como una gran brecha entre la similitud de vectores y la correlación del razonamiento del conocimiento, y la insensibilidad a la lógica del conocimiento (como valores numéricos, relaciones de tiempo, reglas de expertos, etc.), que obstaculizan la implementación de servicios de conocimiento profesionales.
El 24 de octubre de 2024, OpenSPG lanzó la versión 0.5, lanzando oficialmente el marco de servicio de conocimiento de dominio profesional de generación aumentada de conocimiento (KAG). KAG tiene como objetivo aprovechar al máximo las ventajas de Knowledge Graph y la recuperación de vectores, y mejorar bidireccionalmente grandes modelos de lenguaje y gráficos de conocimiento a través de cuatro aspectos para resolver los desafíos de RAG: (1) representación del conocimiento compatible con LLM, (2) Knowledge Graph y texto original El índice mutuo entre fragmentos, (3) un motor de razonamiento híbrido guiado por formas lógicas, (4) alineación del conocimiento con el razonamiento semántico.
KAG es significativamente mejor que NaiveRAG, HippoRAG y otros métodos en tareas de preguntas y respuestas de múltiples saltos. La puntuación F1 en hotpotQA aumentó relativamente en un 19,6% y la puntuación F1 en 2wiki aumentó relativamente en un 33,5%. Hemos aplicado con éxito KAG a las dos tareas de preguntas y respuestas sobre conocimientos profesionales de Ant Group, incluidas las preguntas y respuestas sobre gobierno electrónico y las preguntas y respuestas sobre salud electrónica, y la profesionalidad ha mejorado significativamente en comparación con el método RAG.
El marco KAG incluye tres partes: kg-builder, kg-solver y kag-model. Esta versión solo incluye las dos primeras partes, kag-model será una versión de código abierto gradualmente en el futuro.
kg-builder implementa una representación del conocimiento que es compatible con modelos de lenguaje a gran escala (LLM). Basado en la estructura jerárquica de DIKW (datos, información, conocimiento y sabiduría), TI mejora la capacidad de representación del conocimiento de SPG y es compatible con la extracción de información sin restricciones de esquema y la construcción de conocimiento profesional con restricciones de esquema en el mismo tipo de conocimiento (como el tipo de entidad). y tipo de evento), también admite la representación de índice mutuo entre la estructura del gráfico y el bloque de texto original, lo que respalda la recuperación eficiente de la etapa de pregunta y respuesta de razonamiento.
kg-solver utiliza un motor de razonamiento y resolución híbrido guiado por símbolos lógicos que incluye tres tipos de operadores: planificación, razonamiento y recuperación, para transformar problemas de lenguaje natural en un proceso de resolución de problemas que combina lenguaje y símbolos. En este proceso, cada paso puede utilizar diferentes operadores, como recuperación de coincidencia exacta, recuperación de texto, cálculo numérico o razonamiento semántico, para realizar la integración de cuatro procesos diferentes de resolución de problemas: recuperación, razonamiento de gráficos de conocimiento, razonamiento del lenguaje y cálculo numérico. .
En el contexto de las bases de conocimiento privadas, a menudo coexisten datos no estructurados, información estructurada y experiencia de expertos en negocios. KAG hace referencia a la jerarquía DIKW para actualizar SPG a una versión que sea compatible con los LLM. Para datos no estructurados como noticias, eventos, registros y libros, así como datos estructurados como transacciones, estadísticas y aprobaciones, junto con la experiencia empresarial y las reglas de conocimiento del dominio, KAG emplea técnicas como análisis de diseño, extracción de conocimientos, normalización de propiedades, y alineación semántica para integrar datos comerciales sin procesar y reglas expertas en un gráfico de conocimiento empresarial unificado.
Esto lo hace compatible con la extracción de información sin esquemas y la construcción de experiencia restringida por esquemas en el mismo tipo de conocimiento (por ejemplo, tipo de entidad, tipo de evento) y admite la representación de índice cruzado entre la estructura del gráfico y el bloque de texto original. . Esta representación de índice mutuo es útil para la construcción de índices invertidos basados en la estructura gráfica y promueve la representación unificada y el razonamiento de formas lógicas.
KAG propone una solución híbrida guiada lógicamente formal y un motor de inferencia. El motor incluye tres tipos de operadores: planificación, razonamiento y recuperación, que transforman problemas del lenguaje natural en procesos de resolución de problemas que combinan lenguaje y notación. En este proceso, cada paso puede utilizar diferentes operadores, como recuperación de coincidencia exacta, recuperación de texto, cálculo numérico o razonamiento semántico, para realizar la integración de cuatro procesos diferentes de resolución de problemas: recuperación, razonamiento de gráficos de conocimiento, razonamiento del lenguaje y cálculo numérico. .
Después de la optimización, no solo verificamos la adaptabilidad de KAG en campos verticales, sino que también lo comparamos con el método RAG existente en preguntas y respuestas de múltiples saltos de conjuntos de datos generales. Descubrimos que es obviamente mejor que el método SOTA, con F1 aumentando un 33,5% en 2wiki y un 19,6% en hotpotQA. Seguimos perfeccionando este marco y hemos demostrado su eficacia mediante experimentos de un extremo a otro y métricas de experimentos de ablación. Demostramos la validez de este marco mediante un razonamiento basado en símbolos lógicos y una alineación conceptual.
definición de reglas de identificación de "aplicaciones de juegos de azar"
definir la regla RiskAppTaxo
Define (s:App)-[p:belongTo]->(o:`TaxOfRiskApp`/`GamblingApp`) {
Structure {
(s)
}
Constraint {
R1("risk label marked as gambling") s.riskMark like "%Gambling%"
}
}
definir las reglas de identificación del "desarrollador de aplicaciones"
definir la regla del desarrollador de aplicaciones
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
}
}
definir las reglas para la identificación de los "desarrolladores de aplicaciones de juegos de azar"
definir una regla RiskUser de la aplicación de juegos de apuestas
Define (s:Person)-[p:belongTo]->(o:`TaxOfRiskUser`/`DeveloperOfGamblingApp`) {
Structure {
(s)-[:developed]->(app:`TaxOfRiskApp`/`GamblingApp`)
}
Constraint {
}
}
Los pasos clave en el proceso de razonamiento son los siguientes.
Convierta problemas de lenguaje natural en expresiones lógicas ejecutables, que se basan en el modelado conceptual del proyecto y consulte el documento de minería de productos Black.
Envíe la expresión lógica convertida al razonador OpenSPG para su ejecución y obtener el resultado de la clasificación del usuario.
Generar respuestas a los resultados de clasificación del usuario.
Combinado con el modelado de conceptos OpenSPG, KAG puede reducir la dificultad de la consulta de gráficos de conversión de lenguaje natural, cambiar la conversión orientada a datos a una conversión orientada a conceptos de clasificación y realizar rápidamente la aplicación de campo de preguntas y respuestas en lenguaje natural en el proyecto OpenSPG original.
Recomendar versión del sistema:
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
Requisitos de software:
macOS / Linux User:Docker,Docker Compose
Windows User:WSL 2 / Hyper-V,Docker,Docker Compose
Utilice los siguientes comandos para descargar el archivo docker-compose.yml e iniciar los servicios con Docker Compose.
# establece la variable de entorno HOME (solo los usuarios de Windows necesitan ejecutar este comando) # set HOME=%USERPROFILE%curl -sSL https://raw.githubusercontent.com/OpenSPG/openspg/refs/heads/master/dev/release/ ventana acoplable-compose.yml -o ventana acoplable-compose.yml ventana acoplable componer -f ventana acoplable-compose.yml arriba -d
Navegue a la URL predeterminada del producto KAG con su navegador: http://127.0.0.1:8887
Consulte la guía del producto para obtener una introducción detallada.
Consulte la sección 3.1 para completar la instalación del motor y la imagen dependiente.
Desarrolladores de 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 .
Desarrolladores de 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 .
Consulte la guía de inicio rápido para obtener una introducción detallada del kit de herramientas. Luego, puede utilizar los componentes integrados para reproducir los resultados de rendimiento de los conjuntos de datos integrados y aplicar esos componentes a nuevos escenarios comerciales.
Si los componentes integrados proporcionados por KAG no cumplen con sus requisitos, puede ampliar la implementación de kag-builder y kag-solver por su cuenta. Consulte la extensión KAG-Builder y la extensión KAG-Solver.
KAG utiliza BuilderChain para concatenar componentes como lector, divisor, mapeo, extractor, alineador y vectorizador. Los desarrolladores pueden usar BuilderChain predefinido por kag para completar la construcción del gráfico o ensamblar componentes predefinidos y obtener BuilderChain.
Al mismo tiempo, los desarrolladores pueden personalizar los componentes del constructor e incrustarlos en BuilderChain para su ejecución.
kag
├──interface
│ ├── builder
│ │ ├── aligner_abc.py
│ │ ├── extractor_abc.py
│ │ ├── mapping_abc.py
│ │ ├── reader_abc.py
│ │ ├── splitter_abc.py
│ │ ├── vectorizer_abc.py
│ │ └── writer_abc.py
El kag-solver ejecuta canales de solución que constan de componentes razonadores, generadores y reflectores. KAG proporciona un razonador, generador y reflector predeterminados. Los desarrolladores también pueden proporcionar implementaciones personalizadas basadas en las siguientes 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 admite el acoplamiento con API de MaaS compatibles con servicios OpenAI como Qwen/DeepSeek/GPT, y también admite el acoplamiento con modelos locales implementados por vLLM/Ollama. Los desarrolladores pueden agregar soporte para servicios de modelos personalizados basados en la interfaz llm_client.
kag
├── common
├── llm
├── client
│ ├── llm_client.py
│ ├── ollama_client.py
│ ├── openai_client.py
│ ├── vllm_client.py
KAG admite llamar a modelos representacionales de OpenAI y similares, incluidos los servicios de integración de OpenAI, modelo bge-m3 implementado por Ollama. También admite la carga y el uso de modelos de incrustación locales.
kag
├── common
├── vectorizer
│ ├── vectorizer.py
│ ├── openai_vectorizer.py
│ ├── local_bge_m3_vectorizer.py
│ ├── local_bge_vectorizer.py
Cuando se integra con otros marcos, los datos comerciales externos y el conocimiento experto se pueden utilizar como entrada para llamar al canal kag-builder para completar la construcción del gráfico de conocimiento. También puede llamar al kag-solver para completar el proceso de razonamiento de preguntas y respuestas, y el resultado del razonamiento y el proceso intermedio se revelan al sistema empresarial.
La forma en que otros marcos integran kag se puede describir simplemente como:
Inyección de conocimiento de dominio para realizar la fusión del gráfico de concepto de dominio y el gráfico de entidad.
Optimización del modelo kag para mejorar la eficiencia de la construcción de KG y preguntas y respuestas.
alucinación inhibición del conocimiento restricciones lógicas
Si utiliza este software, cítelo de la siguiente manera:
KAG: Impulsar los LLM en dominios profesionales a través de la generación aumentada de conocimiento
KGFabric: un almacén de gráficos de conocimiento escalable para la interconexión de datos empresariales
@article{liang2024kag, title={KAG: Impulsar los LLM en dominios profesionales a través de la generación aumentada del conocimiento}, autor={Liang, Lei y Sun, Mengshu y Gui, Zhengke y Zhu, Zhongshu y Jiang, Zhouyu y Zhong, Ling y Qu, Yuan y Zhao, Peilong y Bo, Zhongpu y Yang, Jin y otros}, journal={arXiv preprint arXiv:2409.13731}, año={2024}}@article{yikgfabric, title={KGFabric: un almacén de gráficos de conocimiento escalable para empresas Interconexión de datos}, autor = {Yi, Peng y Liang, Lei y Da Zhang, Yong Chen y Zhu, Jinye y Liu, Xiangyu y Tang, Kun y Chen, Jialin y Lin, Hao y Qiu, Leijie y Zhou, Jun}}
Licencia Apache 2.0