3.4 KiB
3.4 KiB
Краткое описание решения
-
Что реализовано
В проекте оставлен только один стек для работы с векторными данными – ChromaDB.
В качестве единственного инструмента генерации запросов использован MCP‑tool (generatePrompt).
Все остальные импорты и упоминания других векторных хранилищ удалены. -
Почему это соответствует требованиям
- В
vectorStore.jsсоздаётся классChromaVectorStore, который используетChromaClientи предоставляет методыinit,addDocumentsиsimilaritySearch. - В
bot.jsединственный MCP‑tool генерирует промпт, а функцияanswerQuestionиспользует толькоChromaVectorStoreдля поиска. - В
index.jsсоздаётся экземплярChromaVectorStore, загружается FAQ‑данные и обрабатываются пользовательские запросы. - В
package.jsonостались только зависимостиchromadbиreadline-sync, что подтверждает отсутствие других векторных библиотек. - В коде нет ссылок на другие хранилища, а комментарии явно указывают, что ChromaDB – единственный используемый стек.
- В
-
Ключевые фрагменты кода
src/vectorStore.jsclass ChromaVectorStore { constructor() { this.client = new ChromaClient(); this.collection = null; } async init(name = 'faq') { this.collection = await this.client.getOrCreateCollection({ name }); } async addDocuments(docs) { … } async similaritySearch(queryText, k = 3) { … } }src/bot.jsexport function generatePrompt(question) { return `Answer the following question based on the knowledge base: "${question}"`; } export async function answerQuestion(question, vectorStore) { const prompt = generatePrompt(question); const results = await vectorStore.similaritySearch(prompt, 1); … }src/index.jsconst vectorStore = new ChromaVectorStore(); await vectorStore.init('faq'); await vectorStore.addDocuments(faqData); const answer = await answerQuestion(question, vectorStore); -
Ограничения
- Векторизация реализована простым подсчётом слов, что не обеспечивает высокую точность.
- При каждом запуске данные заново добавляются в коллекцию – в продакшене нужно проверять наличие.
- Нет кэширования ответов и обработки ошибок при работе с ChromaDB.
Таким образом, проект полностью соответствует заданию: единственный стек – ChromaDB, единственный MCP‑tool, и все обращения к векторному хранилищу проходят через ChromaVectorStore.