Skip to main content
Glama
test-vector-rag.js6.95 kB
#!/usr/bin/env node // Тест векторного RAG с OpenAI эмбеддингами import { VectorRAGService } from '../dist/rag/vector-rag-service.js'; async function testVectorRAG() { 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: Добавление документа с векторами...'); await vectorRAG.addDocument( 'file:///test/vector-rag-test.md', `# Векторный RAG тест Это тестовый документ для проверки работы векторного RAG с OpenAI эмбеддингами. ## Основные функции - Семантический поиск через векторные эмбеддинги - Автоматическое разбиение на чанки - OpenAI text-embedding-3-small модель - Косинусное сходство для ранжирования ## Технологии - OpenAI Embeddings API - SQLite с векторными данными - Docker контейнер - Node.js интеграция ## Преимущества векторного поиска - Понимает семантику, а не только ключевые слова - Находит похожие концепции - Работает с синонимами и перефразировками - Высокая точность результатов Этот документ демонстрирует возможности современного RAG с векторами.`, 'Векторный RAG тест' ); console.log('✅ Документ добавлен с векторами\n'); // Тест 2: Семантический поиск console.log('🔍 Тест 2: Семантический поиск...'); const searchResults = await vectorRAG.search('семантический поиск и векторы', 3); console.log(`✅ Найдено результатов: ${searchResults.length}`); searchResults.forEach((result, index) => { console.log(` ${index + 1}. ${result.title} (${result.uri})`); console.log(` Сходство: ${result.similarity.toFixed(4)}`); console.log(` Текст: ${result.text.substring(0, 100)}...`); console.log(''); }); // Тест 3: Поиск по концепции console.log('🧠 Тест 3: Поиск по концепции...'); const conceptResults = await vectorRAG.search('искусственный интеллект и машинное обучение', 2); console.log(`✅ Найдено результатов: ${conceptResults.length}`); conceptResults.forEach((result, index) => { console.log(` ${index + 1}. ${result.title}`); console.log(` Сходство: ${result.similarity.toFixed(4)}`); console.log(` Текст: ${result.text.substring(0, 80)}...`); console.log(''); }); // Тест 4: Статистика документов console.log('📊 Тест 4: Статистика документов...'); const stats = await vectorRAG.getDocumentStats(); console.log('✅ Статистика получена:'); console.log(` Документов: ${stats.totalDocuments}`); console.log(` Чанков: ${stats.totalChunks}`); console.log(` Эмбеддингов: ${stats.totalEmbeddings}`); console.log(` Модель: ${stats.modelName}`); console.log(''); // Тест 5: Обновление документа console.log('✏️ Тест 5: Обновление документа...'); await vectorRAG.addDocument( 'file:///test/vector-rag-test.md', `# Обновленный векторный RAG тест Это обновленный тестовый документ для проверки работы векторного RAG. ## Новые функции - Автоматическое обновление эмбеддингов при изменении - Улучшенный семантический поиск - Поддержка различных языков - Гибридный поиск (векторный + текстовый) ## Технологии - OpenAI Embeddings API v4 - SQLite с оптимизированными индексами - Docker контейнер - Node.js интеграция - TypeScript типизация ## Расширенные возможности - Мультиязычная поддержка - Контекстный поиск - Ранжирование по релевантности - Кэширование эмбеддингов Документ теперь содержит расширенную информацию о возможностях системы.`, 'Обновленный векторный RAG тест' ); console.log('✅ Документ обновлен с новыми векторами\n'); // Тест 6: Поиск по обновленному контенту console.log('🔍 Тест 6: Поиск по обновленному контенту...'); const updatedSearchResults = await vectorRAG.search('мультиязычная поддержка', 2); console.log(`✅ Найдено результатов: ${updatedSearchResults.length}`); updatedSearchResults.forEach((result, index) => { console.log(` ${index + 1}. ${result.title}`); console.log(` Сходство: ${result.similarity.toFixed(4)}`); 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'); } } } testVectorRAG().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