Система индексации автоматически обрабатывает документы из директории data/documents/ и создает векторные представления для RAG системы.
biotact-production/
├── data/
│ ├── documents/ # 👈 ОСНОВНАЯ ДИРЕКТОРИЯ ДЛЯ ЗАГРУЗКИ
│ │ ├── *.md # Markdown файлы
│ │ └── *.txt # Текстовые файлы
│ └── .index_state.json # Состояние индексации (автоматически)
├── scripts/
│ └── incremental_index.py # 🚀 ГЛАВНЫЙ СКРИПТ ИНДЕКСАЦИИ
└── docs/
└── INDEXING_GUIDE.md # Этот файл
✅ Инкрементальная индексация - индексирует только новые и измененные файлы ✅ Автоматическое отслеживание - запоминает hash каждого файла ✅ Экономия ресурсов - не тратит деньги на переиндексацию существующих файлов ✅ Удаление устаревших - автоматически удаляет векторы для удаленных файлов ✅ Обновление измененных - перезаписывает векторы для отредактированных файлов
# Перейти в директорию проекта
cd /home/temrjan/project/biotact-production
# Запустить индексацию
venv/bin/python scripts/incremental_index.py🚀 Инкрементальная индексация Biotact Knowledge Base
============================================================
📋 Шаг 1: Инициализация...
✅ Коллекция 'biotact_knowledge_v3' уже существует
📋 Шаг 2: Анализ изменений...
📊 Статистика изменений:
✅ Без изменений: 3
🆕 Новые файлы: 1
📝 Изменены: 0
🗑️ Удалены: 0
🔄 Индексация 1 файлов...
🆕 НОВЫЙ: new_document.md
📄 Индексирую 'new_document.md'...
✅ Добавлено 5 новых векторов
💾 Сохранение состояния...
============================================================
✅ ИНДЕКСАЦИЯ ЗАВЕРШЕНА
============================================================
📊 Итоговая статистика коллекции:
- Всего файлов: 4
- Всего векторов: 36
- Статус коллекции: green
- Размер векторов: 3072
# 1. Загрузи файл в директорию
scp новый_файл.md user@server:/home/temrjan/project/biotact-production/data/documents/
# 2. Запусти индексацию
cd /home/temrjan/project/biotact-production
venv/bin/python scripts/incremental_index.pyРезультат: Будет проиндексирован только новый файл ✅
# 1. Отредактируй файл
nano /home/temrjan/project/biotact-production/data/documents/existing_file.md
# 2. Запусти индексацию
venv/bin/python scripts/incremental_index.pyРезультат:
- Старые векторы удалятся 🗑️
- Новые векторы создадутся ✅
# 1. Удали файл
rm /home/temrjan/project/biotact-production/data/documents/old_file.md
# 2. Запусти индексацию
venv/bin/python scripts/incremental_index.pyРезультат: Векторы для этого файла удалятся из Qdrant 🗑️
# 1. Загрузи несколько файлов
scp *.md user@server:/home/temrjan/project/biotact-production/data/documents/
# 2. Запусти индексацию ОДИН РАЗ
venv/bin/python scripts/incremental_index.pyРезультат: Все новые файлы проиндексируются за один проход ✅
.md- Markdown.txt- Plain text
Chunk size: 1024 токенов
Chunk overlap: 200 токенов
Embedding: text-embedding-3-large (OpenAI)
Dimensions: 3072
Distance: Cosine
Collection: biotact_knowledge_v3Файл data/.index_state.json содержит:
{
"filename.md": {
"hash": "abc123...",
"path": "/full/path/to/file",
"size": 12345,
"modified": 1234567890.123,
"indexed_at": "2024-11-20T04:30:00"
}
}- Загружать файлы в
data/documents/ - Запускать
incremental_index.pyпосле изменений - Использовать
.mdили.txtформаты
- Не редактируй
.index_state.jsonвручную - Не удаляй файлы напрямую из Qdrant
- Не запускай несколько индексаций параллельно
Решение: Проверь что файлы находятся в data/documents/ и имеют расширение .md или .txt
Решение: Скрипт автоматически создаст коллекцию при первом запуске
Решение:
- Проверь доступность Qdrant:
curl http://localhost:6333/collections - Проверь API ключ OpenAI в
.env - Проверь лог ошибок
Решение:
- Проверь баланс на счету OpenAI
- Проверь правильность API ключа в
.env - Проверь интернет соединение
- Цена: $0.13 за 1 млн токенов
- Средний документ: ~1000 токенов
- 1000 документов: ~$0.13
Без инкрементальной: $0.13 × количество запусков
С инкрементальной: $0.13 × 1 раз (только новые файлы)
Экономия: 90-99% при частых обновлениях! 💰
curl http://localhost:6333/collections/biotact_knowledge_v3 | python3 -m json.toolcurl -s http://localhost:6333/collections/biotact_knowledge_v3 | \
python3 -c "import json, sys; print(f\"Векторов: {json.load(sys.stdin)['result']['points_count']}\")"cat /home/temrjan/project/biotact-production/data/.index_state.json | python3 -m json.tool# Редактировать crontab
crontab -e
# Добавить задачу (каждый час)
0 * * * * cd /home/temrjan/project/biotact-production && venv/bin/python scripts/incremental_index.py >> logs/indexing.log 2>&1При возникновении проблем:
- Проверь логи в терминале
- Проверь статус всех сервисов (Qdrant, PostgreSQL, FastAPI)
- Проверь конфигурацию в
.env
Последнее обновление: 2024-11-20 Версия: 1.0 Автор: Biotact Team