// Code Node для проверки и обработки пустого результата векторного поиска // Добавьте этот Code Node ПОСЛЕ "Postgres PGVector Store" // Получаем все данные из предыдущей ноды const inputData = $input.all(); // Проверяем, есть ли результаты const hasResults = inputData.length > 0 && inputData.some(item => { // Проверяем разные возможные структуры ответа const data = item.json; // Если есть поле с результатами if (data.documents && Array.isArray(data.documents) && data.documents.length > 0) { return true; } // Если есть поле с метаданными if (data.metadatas && Array.isArray(data.metadatas) && data.metadatas.length > 0) { return true; } // Если есть поле ids if (data.ids && Array.isArray(data.ids) && data.ids.length > 0) { return true; } // Если есть поле output (для langchain) if (data.output && Array.isArray(data.output) && data.output.length > 0) { return true; } // Если данные сами по себе есть if (data && typeof data === 'object' && Object.keys(data).length > 0) { // Проверяем, что это не пустой объект if (Object.values(data).some(val => val !== null && val !== undefined && val !== '')) { return true; } } return false; }); if (!hasResults) { // Если результатов нет - возвращаем структурированный ответ с флагом return [{ json: { // Флаги для обработки isEmpty: true, hasResults: false, error: 'no_vector_results', // Сообщение для логирования message: 'Векторный поиск не нашел похожих документов', // Сохраняем исходные данные для дальнейшей обработки originalChatInput: $('классификатор')?.item?.json?.chatInput || '', originalProblem: $('классификатор')?.item?.json?.output?.problem || '', // Пустые массивы для совместимости с дальнейшими нодами documents: [], metadatas: [], ids: [], output: [], // Метаданные для fallback логики useFallback: true, fallbackReason: 'no_vector_match' } }]; } // Если есть результаты - возвращаем как есть, но добавляем флаг return inputData.map(item => ({ json: { ...item.json, isEmpty: false, hasResults: true } }));