#!/usr/bin/env node
// Тест RAG интеграции с SQLite
import { RAGService } from '../dist/rag/rag-service.js';
async function testRAGIntegration() {
console.log('🧪 Тестирование RAG интеграции с SQLite...\n');
const ragService = new RAGService();
try {
// Тест 1: Добавление документа
console.log('📄 Тест 1: Добавление документа...');
await ragService.addDocument(
'file:///test/rag-test.md',
`# Тест RAG интеграции
Это тестовый документ для проверки работы RAG системы с SQLite.
## Основные функции
- Полнотекстовый поиск через FTS5
- Автоматическое разбиение на чанки
- Хеширование для отслеживания изменений
- Поддержка обновления документов
## Технологии
- SQLite с FTS5
- Docker контейнер
- Node.js интеграция
Этот документ содержит ключевые слова: RAG, SQLite, поиск, документы, чанки.`,
'Тест RAG интеграции'
);
console.log('✅ Документ добавлен\n');
// Тест 2: Поиск по документу
console.log('🔍 Тест 2: Поиск по документу...');
const searchResults = await ragService.search('RAG SQLite', 3);
console.log(`✅ Найдено результатов: ${searchResults.length}`);
searchResults.forEach((result, index) => {
console.log(` ${index + 1}. ${result.title} (${result.uri})`);
console.log(` Релевантность: ${result.score.toFixed(3)}`);
console.log(` Текст: ${result.text.substring(0, 100)}...`);
console.log('');
});
// Тест 3: Получение документа
console.log('📖 Тест 3: Получение документа...');
const document = await ragService.getDocument('file:///test/rag-test.md');
if (document) {
console.log(`✅ Документ получен: ${document.title}`);
console.log(` URI: ${document.uri}`);
console.log(` Размер: ${document.content.length} символов`);
} else {
console.log('❌ Документ не найден');
}
console.log('');
// Тест 4: Список документов
console.log('📚 Тест 4: Список документов...');
const documents = await ragService.listDocuments();
console.log(`✅ Найдено документов: ${documents.length}`);
documents.forEach((doc, index) => {
console.log(` ${index + 1}. ${doc.title} (${doc.uri})`);
});
console.log('');
// Тест 5: Обновление документа
console.log('✏️ Тест 5: Обновление документа...');
await ragService.addDocument(
'file:///test/rag-test.md',
`# Обновленный тест RAG интеграции
Это обновленный тестовый документ для проверки работы RAG системы.
## Новые функции
- Поддержка обновления существующих документов
- Автоматическое пересоздание чанков
- Улучшенный поиск по обновленному контенту
## Технологии
- SQLite с FTS5
- Docker контейнер
- Node.js интеграция
- Автоматическое обновление
Документ теперь содержит обновленную информацию о функциях системы.`,
'Обновленный тест RAG интеграции'
);
console.log('✅ Документ обновлен\n');
// Тест 6: Поиск по обновленному документу
console.log('🔍 Тест 6: Поиск по обновленному документу...');
const updatedSearchResults = await ragService.search('обновленный', 2);
console.log(`✅ Найдено результатов: ${updatedSearchResults.length}`);
updatedSearchResults.forEach((result, index) => {
console.log(` ${index + 1}. ${result.title} (${result.uri})`);
console.log(` Релевантность: ${result.score.toFixed(3)}`);
console.log(` Текст: ${result.text.substring(0, 80)}...`);
console.log('');
});
console.log('✨ Все тесты RAG интеграции завершены успешно!');
} catch (error) {
console.error('❌ Ошибка в тестах RAG интеграции:', error.message);
if (error.message.includes('Нет подключения к базе данных')) {
console.log('\n💡 Убедитесь, что SQLite контейнер запущен:');
console.log(' ./scripts/db.sh start');
console.log(' ./scripts/db.sh init');
}
}
}
testRAGIntegration().catch(console.error);