У довіднику важливо знайти відповідний матеріал і показати його джерело. Демонстрація будує лексичну пошукову модель за чотирма вигаданими документами про робочі години, доставку, повернення та оплату; ці тексти не описують умов Devpilot.
НАВЧАЛЬНИЙ ПРИКЛАД
Пошук у невеликій базі знань
Змініть чотири навчальні документи й побудуйте пошукову модель. За запитом вона знаходить готовий текст за словами; нова відповідь не генерується.
Це ширина демонстраційного полотна. Вона не замінює перевірку справжнього пристрою.
DEMO / ai-search
Пошук у невеликій базі знань
У довіднику важливо знайти відповідний матеріал і показати його джерело. Демонстрація будує лексичну пошукову модель за чотирма вигаданими документами про робочі години, доставку, повернення та оплату; ці тексти не описують умов Devpilot.
Відкрити робочу демонстрацію
Пошук у невеликій базі знань
Переглянути робочий код моделі
Функція навчання
function trainSearchModel(samples) {
if (!Array.isArray(samples) || samples.length < 3 || samples.length > 12) throw new Error('SEARCH_COUNT');
const frequency = new Map();
const documents = samples.map(sample => {
if (!sample || typeof sample.title !== 'string' || !sample.title.trim() ||
typeof sample.text !== 'string' || !sample.text.trim()) throw new Error('TRAINING_FORMAT');
const tokens = tokenizeText(sample.title + ' ' + sample.text);
if (!tokens.length) throw new Error('TRAINING_WORDS');
new Set(tokens).forEach(token => frequency.set(token, (frequency.get(token) || 0) + 1));
return {title: sample.title.trim(), text: sample.text.trim(), tokens};
});
const idf = new Map();
frequency.forEach((count, token) => idf.set(token, Math.log((1 + samples.length) / (1 + count)) + 1));
for (const document of documents) {
const vector = new Map();
document.tokens.forEach(token => vector.set(token, (vector.get(token) || 0) + 1));
vector.forEach((count, token) => vector.set(token, count * idf.get(token)));
document.vector = vector;
document.norm = Math.sqrt(Array.from(vector.values()).reduce((sum, weight) => sum + weight * weight, 0));
delete document.tokens;
}
return {kind: 'search', documents, idf, vocabulary: new Set(idf.keys())};
}Функція перевірки запиту
function searchKnowledge(model, text) {
if (!model || model.kind !== 'search') throw new Error('NOT_TRAINED');
if (typeof text !== 'string' || text.length > 500) throw new Error('QUERY_LIMIT');
const tokens = tokenizeText(text);
const known = tokens.filter(token => model.vocabulary.has(token));
const coverage = tokens.length ? known.length / tokens.length : 0;
if (!known.length) return {review: true, reason: tokens.length ? 'UNKNOWN_WORDS' : 'QUERY_WORDS', document: null, scores: [], known: 0, total: tokens.length, coverage, gap: 0};
const query = new Map();
known.forEach(token => query.set(token, (query.get(token) || 0) + 1));
query.forEach((count, token) => query.set(token, count * model.idf.get(token)));
const norm = Math.sqrt(Array.from(query.values()).reduce((sum, weight) => sum + weight * weight, 0));
const scores = model.documents.map((document, index) => {
let product = 0;
query.forEach((weight, token) => { product += weight * (document.vector.get(token) || 0); });
const score = Math.min(1, Math.max(0, product / (norm * document.norm)));
return {label: document.title, score, index};
}).sort((left, right) => right.score - left.score);
const gap = scores[0].score - scores[1].score;
const reason = coverage < 0.2 ? 'LOW_COVERAGE' : scores[0].score < 0.2 ? 'WEAK_MATCH' : gap < 0.05 ? 'CLOSE_SCORES' : '';
return {review: !!reason, reason, document: reason ? null : model.documents[scores[0].index], scores, known: known.length, total: tokens.length, coverage, gap};
}
Показано функції з цієї демонстрації. Повна реалізація також містить підготовку тексту та інтерфейс.
Малий навчальний корпус обмежує застосовність: модель зіставляє статистику слів і не розуміє сенсу. Незнайомі та неоднозначні тексти потребують ручної оцінки.
Невеликі статистичні моделі працюють у браузері без мережі: це не LLM, не нейромережа й не хмарний ШІ.
Чотири редаговані навчальні документи й локальна побудова пошукової моделі.
Запитати відомості про доставку, звірити результат із джерелом, потім змінити документ і перебудувати модель.
Завдання в цьому сценарії
У довіднику важливо знайти відповідний матеріал і показати його джерело. Демонстрація будує лексичну пошукову модель за чотирма вигаданими документами про робочі години, доставку, повернення та оплату; ці тексти не описують умов Devpilot.
Як побудовано рішення
- Із редагованих рядків «заголовок | текст» будуємо TF-IDF-вектори: враховуємо слова документів та їхню розрізнювальну роль у невеликому корпусі.
- Порівнюємо слова запиту з векторами документів і показуємо відповідний готовий текст із заголовком. Це пошук та отримання тексту, без генерації відповіді й семантичного розуміння.
- Якщо відповідних або однозначних збігів недостатньо, потрібна ручна оцінка. Після редагування документів пошукову модель можна побудувати знову.
Проміжні матеріали
- Початкове завдання та обмеження → У довіднику важливо знайти відповідний матеріал і показати його джерело. Демонстрація будує лексичну пошукову модель за чотирма вигаданими документами про робочі години, доставку, повернення та оплату; ці тексти не описують умов Devpilot.
- Склад рішення → Чотири редаговані навчальні документи й локальна побудова пошукової моделі.
- Перевірка перед запуском → Запитати відомості про доставку, звірити результат із джерелом, потім змінити документ і перебудувати модель.
Що перевірити перед запуском
- Запитати відомості про доставку, звірити результат із джерелом, потім змінити документ і перебудувати модель.
- Для робочої бази погодити актуальні документи, перевірити пошук на відкладених запитах і визначити, коли запитання передається людині.
Що входить у приклад
- Чотири редаговані навчальні документи й локальна побудова пошукової моделі.
- Запит, порівняльні бали документів і готовий текст знайденого джерела.
- Позначення меж пошуку та фрагмент робочого коду без підключення зовнішнього сервісу.
Технічний паспорт
DevPilot 1.5.2 · Охоплення перевірок, вихідний код і дата свідчень
- Статус
- DEMO · Вигадана компанія й навчальні дані
- Матеріали
- Власні HTML/CSS/SVG, вихідний код і локальні алгоритми. Фотографії клієнтів не використовуються.
- Обробка
- Демонстрація виконується в браузері. Відкриття прикладу не створює заявку чи оплачений проєкт.
- Докази
- Вміст і локальні перевірки відокремлені від справжнього браузерного, хостингового та комерційного приймання.