Files
hotels/N8N_SETUP.md
Фёдор 684fada337 🚀 Full project sync: Hotels RAG & Audit System
 Major Features:
- Complete RAG system for hotel website analysis
- Hybrid audit with BGE-M3 embeddings + Natasha NER
- Universal horizontal Excel reports with dashboards
- Multi-region processing (SPb, Orel, Chukotka, Kamchatka)

📊 Completed Regions:
- Орловская область: 100% (36/36)
- Чукотский АО: 100% (4/4)
- г. Санкт-Петербург: 93% (893/960)
- Камчатский край: 87% (89/102)

🔧 Infrastructure:
- PostgreSQL with pgvector extension
- BGE-M3 embeddings API
- Browserless for web scraping
- N8N workflows for automation
- S3/Nextcloud file storage

📝 Documentation:
- Complete DB schemas
- API documentation
- Setup guides
- Status reports
2025-10-27 22:49:42 +03:00

7.0 KiB
Raw Blame History

🤖 НАСТРОЙКА AI AGENT В n8n ДЛЯ АУДИТА ОТЕЛЕЙ

📋 ФАЙЛЫ ДЛЯ НАСТРОЙКИ:

  1. prompt.txt (21 KB) - Полный системный промпт
  2. prompt_short.txt (2.1 KB) - Краткий промпт (если не влезет полный)
  3. questions_17.txt (3 KB) - 17 вопросов в текстовом формате
  4. questions_17.json (6.1 KB) - 17 вопросов в JSON формате

🔧 ПОШАГОВАЯ НАСТРОЙКА n8n:

ШАГ 1: Создай AI Agent Node

  1. Добавь ноду "AI Agent"
  2. Выбери модель: Ollama (или GPT-4o-mini)
  3. В поле "System Message" вставь содержимое из prompt_short.txt

ШАГ 2: Подключи Vector Store

  1. Добавь ноду "Postgres Vector Store"
  2. Настрой подключение к БД:
    • Host: 147.45.189.234
    • Port: 5432
    • Database: default_db
    • User: gen_user
    • Password: 2~~9_^kVsU?2^S
  3. Укажи таблицу: hotel_website_chunks
  4. Колонка с эмбеддингами: embedding
  5. Колонка с текстом: text

ШАГ 3: Создай Loop для 17 вопросов

  1. Добавь ноду "Code" с содержимым из questions_17.json
  2. Код для генерации 17 items:
const questions = $input.item.json.questions;
return questions.map(q => ({ json: q }));
  1. Подключи к "Loop Over Items"

ШАГ 4: Настрой AI Agent в Loop

Для каждого вопроса:

  1. AI Agent получает вопрос из {{ $json.question }}
  2. AI Agent ищет в Vector Store
  3. AI Agent возвращает ответ в формате:
    ✅ ДА, найдено.
    📄 Цитата: "..."
    🔗 URL: https://...
    📊 Детали: ...
    

ШАГ 5: Обработка ответов

Добавь ноду "Code" для парсинга ответов:

const answer = $input.item.json.output;

// Проверка на наличие информации
const isFound = answer.includes('✅ ДА') || answer.includes('найдено');
const isNotFound = answer.includes('❌ НЕТ') || answer.includes('не найдено');

// Извлечение цитаты
const quoteMatch = answer.match(/📄 Цитата: "(.+?)"/s);
const quote = quoteMatch ? quoteMatch[1] : '';

// Извлечение URL
const urlMatch = answer.match(/🔗 URL: (.+)/);
const url = urlMatch ? urlMatch[1].trim() : '';

// Оценка
let score = 0.0;
if (isFound && quote && url) {
  score = 1.0;
} else if (isFound && quote) {
  score = 0.5;
} else if (isNotFound) {
  score = 0.0;
} else {
  score = 0.2;
}

return {
  json: {
    criterion_id: $input.item.json.id,
    criterion_name: $input.item.json.name,
    question: $input.item.json.question,
    ai_answer: answer,
    score: score,
    quote: quote,
    url: url,
    is_found: isFound
  }
};

📊 СТРУКТУРА WORKFLOW:

┌─────────────────┐
│ Start           │
└────────┬────────┘
         │
         ▼
┌─────────────────────────────┐
│ Code: Load 17 Questions     │
│ (из questions_17.json)      │
└────────┬────────────────────┘
         │
         ▼
┌─────────────────────────────┐
│ Loop Over Items             │
│ (17 вопросов)               │
└────────┬────────────────────┘
         │
         ▼
┌─────────────────────────────┐
│ AI Agent                    │
│ + Postgres Vector Store     │
│ (ищет ответ в chunks)       │
└────────┬────────────────────┘
         │
         ▼
┌─────────────────────────────┐
│ Code: Parse Answer          │
│ (извлекает цитату, URL)     │
└────────┬────────────────────┘
         │
         ▼
┌─────────────────────────────┐
│ Aggregate Results           │
│ (собирает все 17 ответов)   │
└────────┬────────────────────┘
         │
         ▼
┌─────────────────────────────┐
│ PostgreSQL: Save Results    │
│ (сохраняет в БД)            │
└─────────────────────────────┘

🎯 КЛЮЧЕВЫЕ ПАРАМЕТРЫ:

AI Agent:

  • Temperature: 0.1 (низкая, для точности)
  • Max Tokens: 500 (достаточно для ответа)
  • Top K: 5 (количество релевантных chunks)

Vector Store:

  • Similarity Threshold: 0.7 (порог релевантности)
  • Max Results: 5 (максимум результатов)

🚀 ЗАПУСК:

  1. Импортируй workflow в n8n
  2. Укажи hotel_id в начальной ноде
  3. Запусти workflow
  4. Получи 17 оценок по критериям
  5. Сохрани результаты в БД

📈 ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:

Для каждого из 17 критериев получишь:

  • Оценка (0.0 - 1.0)
  • 📄 Цитата из текста
  • 🔗 URL страницы
  • 📊 Детали (найденные значения)

⚠️ ВАЖНО:

  • Критерий #6 "Роскомнадзор (реестр)" проверяется отдельно (не через AI Agent)
  • Всего критериев: 18, но AI Agent проверяет только 17
  • Итоговый балл: сумма всех 18 критериев (включая #6)

🔍 ОТЛАДКА:

Если AI Agent не находит информацию:

  1. Проверь подключение к Vector Store
  2. Проверь наличие эмбеддингов для отеля в hotel_website_chunks
  3. Увеличь Top K до 10
  4. Уменьши Similarity Threshold до 0.5
  5. Проверь промпт - используй prompt_short.txt

📞 ПОДДЕРЖКА:

Если что-то не работает:

  1. Проверь логи n8n
  2. Проверь что Vector Store подключен
  3. Проверь что у отеля есть chunks в БД
  4. Проверь формат ответа AI Agent

Удачи! 🚀