Skip to main content
Glama
test-vector-rag-v2.js9.79 kB
#!/usr/bin/env node // Тест обновленного векторного RAG с OpenAI эмбеддингами import { VectorRAGService } from '../dist/rag/vector-rag-service.js'; async function testVectorRAGV2() { console.log('🧪 Тестирование обновленного векторного RAG с OpenAI...\n'); const vectorRAG = new VectorRAGService(); try { // Тест подключения console.log('🔌 Тест подключения...'); const isConnected = await vectorRAG.testConnection(); if (!isConnected) { throw new Error('Нет подключения к OpenAI API или базе данных'); } console.log('✅ Подключение установлено\n'); // Тест 1: Добавление документа с векторами console.log('📄 Тест 1: Добавление документа с векторами...'); const addResult = await vectorRAG.addDocument({ uri: 'file:///test/vector-rag-test.md', title: 'Векторный RAG тест', content: `# Векторный RAG тест Это тестовый документ для проверки работы векторного RAG с OpenAI эмбеддингами. ## Основные функции - Семантический поиск через векторные эмбеддинги - Автоматическое разбиение на чанки - OpenAI text-embedding-3-small модель - Косинусное сходство для ранжирования ## Технологии - OpenAI Embeddings API - SQLite с векторными данными - Docker контейнер - Node.js интеграция ## Преимущества векторного поиска - Понимает семантику, а не только ключевые слова - Находит похожие концепции - Работает с синонимами и перефразировками - Высокая точность результатов Этот документ демонстрирует возможности современного RAG с векторами.`, metadata: { category: 'test', language: 'ru', tags: ['rag', 'vectors', 'openai'] } }); if (addResult.isErr()) { throw new Error(`Ошибка добавления документа: ${addResult.error.message}`); } console.log(`✅ Документ добавлен с векторами (ID: ${addResult.value})\n`); // Тест 2: Семантический поиск console.log('🔍 Тест 2: Семантический поиск...'); const searchResult = await vectorRAG.search({ query: 'семантический поиск и векторы', limit: 3, threshold: 0.5 }); if (searchResult.isErr()) { throw new Error(`Ошибка поиска: ${searchResult.error.message}`); } const results = searchResult.value; console.log(`✅ Найдено результатов: ${results.length}`); results.forEach((result, index) => { console.log(` ${index + 1}. ${result.title} (${result.uri})`); console.log(` Сходство: ${result.similarity.toFixed(4)}`); console.log(` Объяснение: ${result.explanation}`); console.log(` Текст: ${result.text.substring(0, 100)}...`); console.log(''); }); // Тест 3: Поиск по концепции console.log('🧠 Тест 3: Поиск по концепции...'); const conceptResult = await vectorRAG.search({ query: 'искусственный интеллект и машинное обучение', limit: 2, threshold: 0.3 }); if (conceptResult.isErr()) { throw new Error(`Ошибка поиска по концепции: ${conceptResult.error.message}`); } const conceptResults = conceptResult.value; console.log(`✅ Найдено результатов: ${conceptResults.length}`); conceptResults.forEach((result, index) => { console.log(` ${index + 1}. ${result.title}`); console.log(` Сходство: ${result.similarity.toFixed(4)}`); console.log(` Объяснение: ${result.explanation}`); console.log(` Текст: ${result.text.substring(0, 80)}...`); console.log(''); }); // Тест 4: Статистика документов console.log('📊 Тест 4: Статистика документов...'); const statsResult = await vectorRAG.getDocumentStats(); if (statsResult.isErr()) { throw new Error(`Ошибка получения статистики: ${statsResult.error.message}`); } const stats = statsResult.value; console.log('✅ Статистика получена:'); console.log(` Документов: ${stats.totalDocuments}`); console.log(` Чанков: ${stats.totalChunks}`); console.log(` Эмбеддингов: ${stats.totalEmbeddings}`); console.log(` Модель: ${stats.modelName}`); console.log(` Здоровье индекса: ${stats.indexHealth}`); console.log(` Последняя индексация: ${stats.lastIndexed.toISOString()}`); console.log(''); // Тест 5: Health Check console.log('🏥 Тест 5: Health Check...'); const health = await vectorRAG.healthCheck(); console.log('✅ Health Check:'); console.log(` Статус: ${health.status}`); console.log(` База данных: ${health.checks.database ? '✅' : '❌'}`); console.log(` Эмбеддинги: ${health.checks.embedding ? '✅' : '❌'}`); console.log(` Память: ${health.checks.memory ? '✅' : '❌'}`); console.log(` Время: ${health.timestamp.toISOString()}`); console.log(''); // Тест 6: Обновление документа console.log('✏️ Тест 6: Обновление документа...'); const updateResult = await vectorRAG.addDocument({ uri: 'file:///test/vector-rag-test.md', title: 'Обновленный векторный RAG тест', content: `# Обновленный векторный RAG тест Это обновленный тестовый документ для проверки работы векторного RAG. ## Новые функции - Автоматическое обновление эмбеддингов при изменении - Улучшенный семантический поиск - Поддержка различных языков - Гибридный поиск (векторный + текстовый) ## Технологии - OpenAI Embeddings API v4 - SQLite с оптимизированными индексами - Docker контейнер - Node.js интеграция - TypeScript типизация ## Расширенные возможности - Мультиязычная поддержка - Контекстный поиск - Ранжирование по релевантности - Кэширование эмбеддингов Документ теперь содержит расширенную информацию о возможностях системы.`, metadata: { category: 'test', language: 'ru', tags: ['rag', 'vectors', 'openai', 'updated'], version: '2.0' } }); if (updateResult.isErr()) { throw new Error(`Ошибка обновления документа: ${updateResult.error.message}`); } console.log(`✅ Документ обновлен с новыми векторами (ID: ${updateResult.value})\n`); // Тест 7: Поиск по обновленному контенту console.log('🔍 Тест 7: Поиск по обновленному контенту...'); const updatedSearchResult = await vectorRAG.search({ query: 'мультиязычная поддержка', limit: 2, threshold: 0.4 }); if (updatedSearchResult.isErr()) { throw new Error(`Ошибка поиска по обновленному контенту: ${updatedSearchResult.error.message}`); } const updatedResults = updatedSearchResult.value; console.log(`✅ Найдено результатов: ${updatedResults.length}`); updatedResults.forEach((result, index) => { console.log(` ${index + 1}. ${result.title}`); console.log(` Сходство: ${result.similarity.toFixed(4)}`); console.log(` Объяснение: ${result.explanation}`); console.log(` Метаданные: ${JSON.stringify(result.metadata)}`); console.log(` Текст: ${result.text.substring(0, 80)}...`); console.log(''); }); console.log('✨ Все тесты обновленного векторного RAG завершены успешно!'); } catch (error) { console.error('❌ Ошибка в тестах обновленного векторного RAG:', error.message); if (error.message.includes('OPENAI_API_KEY')) { console.log('\n💡 Убедитесь, что OPENAI_API_KEY установлен в .env файле'); } if (error.message.includes('Нет подключения к базе данных')) { console.log('\n💡 Убедитесь, что SQLite контейнер запущен:'); console.log(' ./scripts/db.sh start'); console.log(' ./scripts/db.sh init'); } } } testVectorRAGV2().catch(console.error);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Galiusbro/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server