Полностью локальная версия! Используются:
- LM Studio: https://lmstudio.ai/
- LLM:
bartowski/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-f16.gguf - Embeddings:
intfloat/multilingual-e5-large
Это прототип решения типа Agentic RAG (Retrieval-Augmented Generation) с данными из Jira, Confluence и Git.
Система управления знаниями GenAI-Powered Knowledge Management System» предназначена для оптимизации управления знаниями в организации с использованием передовых возможностей искусственного интеллекта.
1. Взаимодействие с пользователем (User Interaction):
- User: Процесс начинается с пользователя, который задает вопрос агентам AI.
- GenAI_Agent: Агенты GenAI являются ключевыми компонентами, получающими вопросы от пользователей и предоставляющими ответы.
2. Управление контекстом (Context Management):
- Контекст данных (Data Context): Агенты GenAI взаимодействуют с контекстом данных, размещенным в истории чата. Они получают данные контекста и обновляют их по мере необходимости, обеспечивая актуальный поток информации.
3. Использование инструментов (Tool Utilization):
- Инструмент поиска и суммаризации (Search Tool & Summary Tool): Для предоставления точных и релевантных ответов агенты GenAI используют инструменты поиска и суммаризации. Эти инструменты взаимодействуют с векторными базами данных для извлечения релевантных фрагментов информации.
4. Внешний поиск (External Search):
- Вебпоиск (WebSearch): В дополнение к внутренним данным агенты GenAI могут выполнять веб-поиск для сбора дополнительной информации, которая может иметь отношение к вопросу пользователя.
5. Загрузка данных (Data Ingestion):
- Загрузчики документов (Document Loaders): Эти компоненты наполняют векторные базы данных из различных исходных систем - Jira, Confluence и Git, обеспечивая агентам GenAI богатый набор данных для работы.
Эта архитектура обеспечивает бесшовную интеграцию данных и интеллектуальное разрешение запросов, используя как структурированные внутренние данные, так и внешние ресурсы для повышения эффективности управления знаниями.
(01_SyntheticDataGeneration_Confluence.py)
Этот модуль предназначен для генерации запрошенного количества записей синтетических данных, с метаданными и описаниями, и сохранить их в указанном JSON-файле.
Данные посвящены описанию вымышленного программного продукта под названием «Moon Flight System».
0.2. Генерация синтетических данных в формате CSV для эмуляции данных Jira (02_SyntheticDataGeneration_Jira.py)
Этот модуль использует библиотеку Faker для генерации реалистичных случайных данных для различных полей.
Данные содержат информацию о тикетах Jira для вымышленного программного продукта под названием «Moon Flight System».
Этот модуль предназначен для преобразования CSV-файла с данными тикетов Jira в формат JSON, разбивает данные на фрагменты и создает векторную базу данных FAISS для эффективного поиска.
Этот Python-модуль обрабатывает JSON-файл, содержащий данные Confluence, разбивает их на фрагменты, и создает векторную базу данных FAISS для эффективного поиска.
Этот Python-модуль предназначен для клонирования Git-репозитория, загрузки из него определенных файлов, разделение данных на фрагменты (chunks) и создания векторной базы знаний.
Этот модуль предназначен для обработки и извлечения определенной информации:
- из векторной базы тикетов Jira
- из векторной базы документов системы Confluence
- из векторной базы знаний клонированого Git-репозитория.
Данный код реализует систему обработки вопросов пользователей, направляя их в соответствующие базы данных в зависимости от тематики вопроса.
-
Функция
get_route:- Берет вопрос пользователя и определяет, в какую из систем (Jira, Confluence, Git или другое) его следует направить.
- Использует модель ChatOpenAI для интерпретации вопроса и возвращает ответ с указанием источника:
- source = 'confluence'
- source = 'jira'
- source = 'git'
- source = 'other' - если тема не определена, то другое;
- source = 'unknown' - в случае ошибки.
-
Функция
get_responce:- Сначала вызывает
get_routeдля определения источника вопроса. - В зависимости от источника вызывает функцию
process_questionс соответствующей векторной базой знаний и системым промтом. - Если источник не определен, возвращает стандартный ответ.
- Сначала вызывает
-
Пользовательское взаимодействие: Пользователь вводит вопрос в интерфейсе, обрабатываемом модулем
st.py. -
Передача вопроса: Вопрос передается от
st.pyкKnowledge_Base_Router, где осуществляется вызов функцииget_model_response. -
Маршрутизация запроса:
- Внутри
Knowledge_Base_Router, функцияget_routeиспользуется для определения типа источника, к которому следует отнести вопрос. Поэтому вопрос отправляется вChatOpenAIдля выполнения обработки и возврата JSON с возможными значениями:jira,confluence,gitилиother. В случае ошибки -unknown.
- Внутри
-
Обработка запроса:
- На основании маршрутизации вопроса (в зависимости от идентифицированного источника) вызывается
process_questionвSimpyRAG. - Подгружается соответствующая база данных с помощью
AI_Tools, используя функциюtls.load_db.
- На основании маршрутизации вопроса (в зависимости от идентифицированного источника) вызывается
-
Получение содержания сообщения:
- В
SimpyRAGосуществляется вызов функцииget_message_contentдля извлечения наиболее релевантных фрагментов из базы данных, основываясь на векторах, созданных с помощьюget_embeddings.
- В
-
Запрос к моделям LLM:
- Затем, вызов
tls.gpt_requestиспользуется для отправки пользовательского запроса к языковой модели, развернутой наChatOpenAI, и получение ответа.
- Затем, вызов
-
Возврат ответа:
- Ответ от
SimpyRAGвозвращается вKnowledge_Base_Router, который его передает обратно вst.pyдля отображения пользователю.
- Ответ от
Этот модуль позволяет расширить возможности обработки и поиска текстов с использованием вкраплений и других методов обработки естественного языка. В нем используются различные инструменты, такие как OpenAI для генерации ответов, FAISS для эффективного поиска векторного сходства, Loguru для надежного протоколирования, а также LangChain для разбиения текста на удобные фрагменты и вычисления вкраплений.
Приме GUI на Streamlit.
Запускать так:
Открываем в браузере по адресу http://localhost:8501/
Приглашаю в Телеграм общаться по это теме: https://t.me/AiExp01




