中文版文档
Технология Retrival Augmentation Generation (RAG) способствует интеграции предметных приложений с большими языковыми моделями. Однако у RAG есть такие проблемы, как большой разрыв между векторным сходством и корреляцией рассуждений о знаниях, а также нечувствительность к логике знаний (например, числовые значения, временные отношения, экспертные правила и т. д.), которые препятствуют реализации услуг профессиональных знаний.
24 октября 2024 года OpenSPG выпустила версию 0.5, официально выпустив профессиональную структуру службы доменных знаний для генерации дополненных знаний (KAG). KAG стремится в полной мере использовать преимущества графа знаний и векторного поиска, а также двунаправленно совершенствовать большие языковые модели и графы знаний с помощью четырех аспектов для решения задач RAG: (1) представление знаний, удобное для LLM, (2) граф знаний и исходный текст Взаимный индекс между фрагментами, (3) гибридная машина рассуждения, управляемая логическими формами, (4) соответствие знаний семантическим рассуждениям.
KAG значительно лучше, чем NaiveRAG, HippoRAG и другие методы в многошаговых задачах вопросов и ответов. Оценка F1 на hotpotQA относительно увеличилась на 19,6%, а оценка F1 на 2wiki относительно увеличилась на 33,5%. Мы успешно применили KAG для решения двух задач Ant Group по вопросам профессиональных знаний и ответов, включая вопросы и ответы для электронного правительства и вопросы и ответы для электронного здравоохранения, и профессионализм был значительно улучшен по сравнению с методом RAG.
Структура KAG включает три части: построитель кг, решатель кг и модель каг. Этот выпуск включает только первые две части, в будущем Kag-модель будет постепенно выпускаться с открытым исходным кодом.
kg-builder реализует представление знаний, дружественное к крупномасштабным языковым моделям (LLM). Основываясь на иерархической структуре DIKW (данные, информация, знания и мудрость), ИТ расширяет возможности представления знаний SPG и совместим с извлечением информации без ограничений схемы и построением профессиональных знаний с ограничениями схемы для одного и того же типа знаний (например, типа сущности). и тип события), он также поддерживает представление взаимного индекса между структурой графа и исходным текстовым блоком, что обеспечивает эффективный поиск аргументированного вопроса и этапа ответа.
kg-solver использует гибридный механизм решения и рассуждения, управляемый логическими символами, который включает в себя три типа операторов: планирование, рассуждение и извлечение, чтобы преобразовать проблемы естественного языка в процесс решения проблем, который сочетает в себе язык и символы. В этом процессе на каждом этапе могут использоваться разные операторы, такие как поиск точного соответствия, поиск текста, численный расчет или семантическое рассуждение, чтобы реализовать интеграцию четырех различных процессов решения проблем: поиск, рассуждение по диаграмме знаний, языковое рассуждение и числовое вычисление. .
В контексте частных баз знаний часто сосуществуют неструктурированные данные, структурированная информация и опыт бизнес-экспертов. KAG ссылается на иерархию DIKW для обновления SPG до версии, дружественной для LLM. Для неструктурированных данных, таких как новости, события, журналы и книги, а также структурированных данных, таких как транзакции, статистика и утверждения, а также правил делового опыта и знаний предметной области, KAG использует такие методы, как анализ макета, извлечение знаний, нормализация свойств, и семантическое выравнивание для интеграции необработанных бизнес-данных и экспертных правил в единый граф бизнес-знаний.
Это делает его совместимым с извлечением информации без схемы и построением экспертизы с ограничениями по схеме для одного и того же типа знаний (например, типа сущности, типа события) и поддерживает перекрестное индексное представление между структурой графа и исходным текстовым блоком. . Такое представление взаимного индекса полезно для построения инвертированного индекса на основе структуры графа и способствует унифицированному представлению и рассуждению логических форм.
KAG предлагает логически формальное управляемое гибридное решение и механизм вывода. Механизм включает в себя три типа операторов: планирования, рассуждения и поиска, которые преобразуют проблемы естественного языка в процессы решения проблем, сочетающие язык и обозначения. В этом процессе на каждом этапе могут использоваться разные операторы, такие как поиск точного соответствия, поиск текста, численный расчет или семантическое рассуждение, чтобы реализовать интеграцию четырех различных процессов решения проблем: поиск, рассуждение по диаграмме знаний, языковое рассуждение и числовое вычисление. .
После оптимизации мы не только проверили адаптивность KAG в вертикальных полях, но и сравнили его с существующим методом RAG в многоскачковых вопросах и ответах общих наборов данных. Мы обнаружили, что он явно лучше, чем метод SOTA: F1 увеличился на 33,5% на 2wiki и на 19,6% на hotpotQA. Мы продолжаем совершенствовать эту структуру и продемонстрировали ее эффективность с помощью сквозных экспериментов и показателей экспериментов по абляции. Мы демонстрируем обоснованность этой концепции посредством логических рассуждений, основанных на символах, и концептуального согласования.
определение правил идентификации «игрового приложения»
определить правило рискаAppTaxo
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 Product Mining.
Отправьте преобразованное логическое выражение в механизм рассуждений OpenSPG для выполнения, чтобы получить результат классификации пользователей.
Генерируйте ответы на результаты классификации пользователя.
В сочетании с концептуальным моделированием OpenSPG KAG может снизить сложность запроса графа преобразования естественного языка, заменить преобразование, ориентированное на данные, на преобразование, ориентированное на концепцию классификации, и быстро реализовать полевое применение вопросов и ответов на естественном языке в исходном проекте 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 docker compose -f docker-compose.yml up -d
Перейдите по URL-адресу продукта KAG по умолчанию в браузере: 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 и расширению KAG-Solver.
KAG использует BuilderChain для объединения таких компонентов, как считыватель, разделитель, картография, экстрактор, выравниватель и векторизатор. Разработчики могут использовать BuilderChain, предопределенный kag, для завершения построения графа или собрать предопределенные компоненты и получить 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 поддерживает стыковку с API-интерфейсами MaaS, совместимыми с сервисами OpenAI, такими как Qwen/DeepSeek/GPT, а также поддерживает стыковку с локальными моделями, развернутыми vLLM/Ollama. Разработчики могут добавить поддержку сервисов пользовательских моделей на основе интерфейса llm_client.
kag
├── common
├── llm
├── client
│ ├── llm_client.py
│ ├── ollama_client.py
│ ├── openai_client.py
│ ├── vllm_client.py
KAG поддерживает вызов репрезентативных моделей OpenAI и т.п., включая службы внедрения OpenAI, модель bge-m3, развернутую Ollama. Он также поддерживает загрузку и использование локальных моделей внедрения.
kag
├── common
├── vectorizer
│ ├── vectorizer.py
│ ├── openai_vectorizer.py
│ ├── local_bge_m3_vectorizer.py
│ ├── local_bge_vectorizer.py
При интеграции с другими платформами внешние бизнес-данные и экспертные знания могут использоваться в качестве входных данных для вызова конвейера kag-builder для завершения построения графа знаний. Вы также можете вызвать kag-solver для завершения процесса рассуждения вопросов и ответов, и результат рассуждения и промежуточный процесс будут показаны бизнес-системе.
То, как другие фреймворки интегрируют Kag, можно просто описать так:
Внедрение знаний предметной области для реализации слияния графа понятий предметной области и графа сущностей
оптимизация kag-модели для повышения эффективности строительства КР и вопросов и ответов
галлюцинации, торможение знаний, логические ограничения
Если вы используете это программное обеспечение, укажите его, как показано ниже:
KAG: Повышение уровня LLM в профессиональных областях посредством генерации дополненных знаний
KGFabric: масштабируемое хранилище графов знаний для взаимодействия корпоративных данных
@article{liang2024kag, title={KAG: Развитие LLM в профессиональных областях посредством генерации дополненных знаний}, автор={Лян, Лэй и Сунь, Мэншу и Гуй, Чжэнке и Чжу, Чжуншу и Цзян, Чжоую и Чжун, Лин и Цюй, Юань и Чжао, Пейлун и Бо, Чжунпу и Ян, Цзинь и другие}, журнал={препринт arXiv arXiv:2409.13731}, год={2024}}@article{yikgfabric, title={KGFabric: масштабируемое хранилище графов знаний для предприятия Взаимосвязь данных}, автор={И, Пэн и Лян, Лэй и Да Чжан, Юн Чен и Чжу, Цзинье и Лю, Сянъюй и Тан, Кунь и Чен, Цзялин и Линь, Хао и Цю, Лейцзе и Чжоу, Цзюнь}}
Лицензия Апач 2.0