AI-курация и обновление базы знаний: аудит, рекомендации, дашборд

AI-курация и обновление базы знаний Мы часто видим, как база знаний, которую не поддерживают, хуже отсутствия базы знаний. Она создаёт иллюзию порядка, но на деле полна устаревших инструкций, дублирующих статей и мёртвых ссылок. Ручная курация при объёме 500+ статей нереалистична: у редактора про

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

AI-курация и обновление базы знаний

Мы часто видим, как база знаний, которую не поддерживают, хуже отсутствия базы знаний. Она создаёт иллюзию порядка, но на деле полна устаревших инструкций, дублирующих статей и мёртвых ссылок. Ручная курация при объёме 500+ статей нереалистична: у редактора просто нет времени систематически проверять каждую.

Наша AI-система курирования не заменяет экспертов, но автоматически выявляет проблемы, расставляет приоритеты для ревью и предлагает конкретные правки — редактор работает с готовым ревью-листом, а не с голым контентом. За 5 лет работы мы обработали базы знаний от 200 до 10 000 статей и гарантируем улучшение метрик свежести и покрытия.

Как AI выявляет устаревший контент?

Система анализирует каждую статью по нескольким параметрам. Во-первых, проверяется дата последнего обновления и сопоставляется с тематикой: статьи о версиях ПО теряют актуальность быстрее, чем концептуальные материалы. Во-вторых, LLM оценивает содержимое на предмет упоминания устаревших версий, названий продуктов или команд. Например, если в статье упоминается v1.2 а текущая версия v3.0 — ставится флаг. В-третьих, проверяются внутренние ссылки: битые ссылки отправляются в список на исправление. Для эмбеддингов мы используем SentenceTransformer, а для оркестрации LLM — LangChain.

Пять типов проблем, которые выявляет AI

  1. Устаревший контент — версии ПО, названия команд, ссылки на несуществующие процессы.
  2. Дублирование — семантически похожие статьи по разным URL.
  3. Пробелы — вопросы, которые пользователи часто задают, но статьи нет.
  4. Низкое качество — статьи без acceptance criteria, без примеров, с расплывчатыми формулировками.
  5. Нарушенные связи — внутренние ссылки ведут на несуществующие страницы.
from langchain_openai import ChatOpenAI from sentence_transformers import SentenceTransformer from sklearn.metrics.pairwise import cosine_similarity import numpy as np from datetime import datetime, timedelta class KnowledgeBaseAuditor: def __init__(self, confluence_client, llm: ChatOpenAI, embedder: SentenceTransformer): self.confluence = confluence_client self.llm = llm self.embedder = embedder def find_duplicates(self, articles: list[dict], threshold: float = 0.88) -> list[tuple]: """Находит семантически дублирующие статьи""" texts = [f"{a['title']} {a['body'][:500]}" for a in articles] embeddings = self.embedder.encode(texts, batch_size=32, show_progress_bar=True) # Попарное сравнение — только верхний треугольник матрицы sim_matrix = cosine_similarity(embeddings) np.fill_diagonal(sim_matrix, 0) duplicates = [] for i in range(len(articles)): for j in range(i + 1, len(articles)): if sim_matrix[i][j] >= threshold: duplicates.append(( articles[i]["id"], articles[i]["title"], articles[j]["id"], articles[j]["title"], round(float(sim_matrix[i][j]), 3) )) return sorted(duplicates, key=lambda x: x[4], reverse=True) async def check_staleness(self, article: dict) -> dict: """Оценивает устаревание статьи через LLM""" last_updated = datetime.fromisoformat(article["last_updated"]) age_days = (datetime.now() - last_updated).days prompt = f"""Оцени свежесть технической статьи. Заголовок: {article['title']} Содержимое (первые 1000 символов): {article['body'][:1000]} Последнее обновление: {age_days} дней назад Проверь: 1. Упоминаются ли конкретные версии ПО/инструментов? Актуальны ли они? 2. Есть ли устаревшие термины (например, название старой команды или продукта)? 3. Ссылки выглядят актуально? 4. Общая оценка актуальности: актуально/требует_проверки/устарело Верни JSON: {{staleness_level, reasons: [], suggested_action}}""" result = await self.llm.ainvoke(prompt) return {"article_id": article["id"], **eval(result.content)} def find_content_gaps( self, support_queries: list[str], articles: list[dict] ) -> list[dict]: """Находит вопросы, на которые нет статей""" # Индексируем существующие статьи article_embs = self.embedder.encode( [a["title"] + " " + a["body"][:200] for a in articles] ) gaps = [] for query in support_queries: query_emb = self.embedder.encode([query]) similarities = cosine_similarity(query_emb, article_embs)[0] max_sim = np.max(similarities) if max_sim < 0.65: # нет достаточно похожей статьи gaps.append({ "query": query, "best_match_score": round(float(max_sim), 3), "best_match_article": articles[np.argmax(similarities)]["title"] }) return sorted(gaps, key=lambda x: x["best_match_score"]) 

Автоматическое предложение правок

После выявления проблем — генерация конкретных улучшений:

 async def suggest_improvements(self, article: dict) -> dict: prompt = f"""Проверь статью базы знаний и предложи конкретные улучшения. Статья: {article['title']} Текст: {article['body'][:2000]} Оцени и предложи правки по каждому критерию: 1. Ясность — понятна ли статья новому сотруднику? 2. Полнота — есть ли примеры, конкретные шаги? 3. Структура — нужны ли заголовки, списки? 4. Актуальность — нет ли устаревших деталей? Для каждой проблемы: цитата из оригинала → предлагаемая правка. Верни JSON: {{score: 0-10, issues: [{{location, problem, suggestion}}]}}""" result = await self.llm.ainvoke(prompt) return {"article_id": article["id"], **eval(result.content)} 

Дашборд состояния базы знаний

Метрика Как считается Целевое значение
Coverage Rate % вопросов из саппорта с ответом в KB > 70%
Freshness Score % статей обновлённых < 6 мес назад > 80%
Duplication Rate % дублирующих пар / всего статей < 5%
Quality Score Средний AI-балл качества по всем статьям > 7.5/10
Broken Links Rate % статей с нерабочими ссылками < 2%
Пример дашборда после аудита

Статистика по базе из 800 статей:

  • Дубли: 67 пар
  • Устаревшие: 124 статьи (>18 мес)
  • Пробелы: 89 вопросов без статей
  • Средний Quality Score: 6.2/10

Почему автоматическое курирование эффективнее ручного?

Сравним: редактор-человек тратит в среднем 15–20 минут на проверку одной статьи. Для базы из 800 статей это 200–270 часов непрерывной работы — без учёта времени на исправления. AI-система обрабатывает тот же объём за 2–3 часа анализа и выдаёт приоритезированный список проблем. Редактору остаётся только утвердить или отклонить предложенные правки. Таким образом, AI сокращает время курации в 15–20 раз, сохраняя качество.

Параметр Ручная курация AI-курация
Время на 500 статей 125–175 часов 2–3 часа анализа
Полнота охвата Зависит от усталости редактора 100% статей
Объективность Субъективно Стандартизированные критерии
Обновляемость Раз в квартал Еженедельно

Что входит в работу

  • Аудит текущей базы знаний: полный анализ статей, выявление дублей, устаревшего контента, пробелов.
  • Настройка AI-пайплайна: интеграция с Confluence, Notion, GitBook или API; выбор модели, настройка порогов сходства.
  • Дашборд с метриками: визуализация Freshness Score, Coverage Rate, Duplication Rate, Quality Score.
  • Автоматические рекомендации: LLM генерирует конкретные правки для каждой проблемной статьи.
  • Обучение команды: семинар по работе с системой, передача документации.
  • Гарантия поддержки: 3 месяца сопровождения после внедрения.

По нашим данным, после внедрения AI-курации компании сокращают время на поддержку базы знаний на 60–80%.

Процесс работы

  1. Аналитика: сбор и структурирование текущих статей, выгрузка логов поиска и запросов в саппорт.
  2. Проектирование: выбор архитектуры (RAG, fine-tuning или zero-shot), подбор модели и эмбеддера.
  3. Реализация: разработка пайплайна аудита, интеграция с хранилищем, настройка дашборда.
  4. Тестирование: прогон на тестовой выборке, сверка с экспертной оценкой, калибровка порогов.
  5. Деплой: запуск в продуктив, передача команде, обучение.

Сроки и стоимость

Сроки зависят от объёма базы и сложности интеграции. Аудит и выявление проблем занимают от 1 до 2 недель. Система автоматических рекомендаций и дашборд — ещё 3–4 недели. Стоимость рассчитывается индивидуально после оценки вашей базы знаний и текущих процессов. Мы гарантируем прозрачное ценообразование и фиксацию стоимости на этапе договора.

Оценим ваш проект бесплатно. Свяжитесь с нами, чтобы получить предварительный анализ и дашборд метрик вашей базы знаний.