Уяви: ти завантажуєш свої документи, нотатки чи корпоративні матеріали — і отримуєш особистого AI-асистента, який відповідає на запитання саме на основі твоїх даних. Цей туторіал покаже, як побудувати таку систему з нуля, використовуючи безкоштовні або майже безкоштовні інструменти. На реалізацію знадобиться приблизно 2–3 години, а базові знання Python (на рівні “можу запустити скрипт”) — єдина технічна вимога для старту.
🛠️ Що знадобиться
- OpenRouter — API-шлюз для доступу до різних LLM-моделей, включно з Llama 3. Реєстрація безкоштовна, є безкоштовні квоти на запити.
- Python 3.10+ — середовище для виконання коду. Безкоштовний, завантажується з python.org.
- LlamaIndex — бібліотека для побудови RAG-систем (пошук по документах + генерація відповідей). Безкоштовна, open-source.
- ChromaDB — локальна векторна база даних для зберігання embeddings твоїх документів. Безкоштовна, працює повністю локально.
- VS Code або будь-який редактор коду — для редагування скриптів. VS Code безкоштовний.
- Твої документи — PDF, TXT або DOCX файли, з яких буде формуватися база знань.
📋 Покрокова інструкція
Крок 1: Реєстрація в OpenRouter та отримання API-ключа
Перейди на сайт openrouter.ai та натисни кнопку “Sign In” у правому верхньому куті. Обери реєстрацію через Google або email. Після входу клікни на своє ім’я у правому верхньому куті → обери “Keys” у випадаючому меню → натисни “Create Key”. У полі “Name” введи щось на кшталт knowledge-base-key, ліміт залиш порожнім, натисни “Create”. Одразу скопіюй ключ (він починається з sk-or-v1-...) — після закриття вікна ти його більше не побачиш, тому збережи в текстовому файлі. На безкоштовному тарифі моделі Llama 3.1 8B та Llama 3.2 доступні за мінімальну ціну або безкоштовно.

Крок 2: Встановлення Python-середовища та залежностей
Відкрий термінал (у Windows — PowerShell або CMD, на Mac/Linux — Terminal) і виконай команди по черзі. Спочатку створи папку проєкту: mkdir ai-knowledge-base, потім перейди в неї: cd ai-knowledge-base. Створи віртуальне середовище командою python -m venv venv, а потім активуй його: на Windows — venv\Scripts\activate, на Mac/Linux — source venv/bin/activate. Тепер встанови всі необхідні бібліотеки однією командою: pip install llama-index llama-index-llms-openai-like llama-index-embeddings-huggingface chromadb python-dotenv pypdf. Встановлення займе 3–5 хвилин — це нормально, пакетів багато.
Крок 3: Налаштування конфігурації та підключення до OpenRouter
У папці ai-knowledge-base створи файл .env (саме з крапкою на початку) і встав туди свій ключ: OPENROUTER_API_KEY=sk-or-v1-твій_ключ_тут. Потім створи файл config.py і встав наступний код:
import os
from dotenv import load_dotenv
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
load_dotenv()
llm = OpenAILike(
model="meta-llama/llama-3.1-8b-instruct:free",
api_base="https://openrouter.ai/api/v1",
api_key=os.getenv("OPENROUTER_API_KEY"),
is_chat_model=True,
)
embed_model = HuggingFaceEmbedding(
model_name="sentence-transformers/paraphrase-multilingual-mpnet-base-v2"
)
Зверни увагу: для embeddings ми використовуємо локальну мультимовну модель — вона підтримує українську мову та працює безкоштовно прямо на твоєму комп’ютері, без зовнішніх API.
Крок 4: Завантаження документів та побудова векторної бази
Створи папку documents всередині проєкту і поклади туди свої PDF або TXT файли — це і буде твоя база знань. Потім створи файл build_index.py з таким кодом:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
import chromadb
from config import llm, embed_model
Settings.llm = llm
Settings.embed_model = embed_model
print("Завантажую документи...")
documents = SimpleDirectoryReader("./documents").load_data()
print(f"Знайдено документів: {len(documents)}")
chroma_client = chromadb.PersistentClient(path="./chroma_db")
chroma_collection = chroma_client.get_or_create_collection("knowledge_base")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
print("Будую індекс (це може зайняти кілька хвилин)...")
index = VectorStoreIndex.from_documents(
documents,
storage_context=storage_context,
)
print("Готово! Індекс збережено у папці chroma_db")
Запусти скрипт командою python build_index.py. Під час першого запуску система завантажить embedding-модель (~1 ГБ) — це займе час, але відбувається лише один раз. Після завершення у твоїй папці з’явиться директорія chroma_db — це і є твоя векторна база знань.
Крок 5: Запуск AI-асистента та тестування бази знань
Створи фінальний файл ask.py — це інтерфейс для спілкування з твоєю базою знань:
from llama_index.core import VectorStoreIndex, Settings
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
import chromadb
from config import llm, embed_model
Settings.llm = llm
Settings.embed_model = embed_model
chroma_client = chromadb.PersistentClient(path="./chroma_db")
chroma_collection = chroma_client.get_or_create_collection("knowledge_base")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_vector_store(
vector_store, storage_context=storage_context
)
query_engine = index.as_query_engine(similarity_top_k=3)
print("AI база знань готова! Введіть 'вихід' для завершення.\n")
while True:
question = input("Ваше запитання: ")
if question.lower() in ["вихід", "exit", "quit"]:
break
response = query_engine.query(question)
print(f"\nВідповідь: {response}\n")
print("-" * 50)
Запусти командою python ask.py і постав перше запитання по своїх документах. Ти маєш отримати відповідь, яка базується виключно на завантажених матеріалах — це і є твоя персональна AI база знань.
⚠️ Типові помилки та як їх уникнути
- Помилка “API key not found” — перевір, що файл
.envзнаходиться у тій самій папці, де запускаєш скрипт, і що ключ скопійований без зайвих пробілів на початку чи в кінці. - Документи не знайдено або порожня відповідь — переконайся, що у папці
documentsє файли, і що PDF не захищені паролем. Для захищених PDF потрібно спочатку зняти захист. - Модель відповідає не на основі твоїх документів — це означає, що
similarity_top_kповертає нерелевантні чанки. Спробуй збільшити значення до 5 або переформулюй запитання більш конкретно. - Помилка при встановленні пакетів на Windows — встанови Microsoft C++ Build Tools безкоштовно з сайту Microsoft, деякі пакети потребують компілятора.
- Відповіді англійською замість української — додай до запиту системну інструкцію. У файлі
ask.pyзмін рядокquery_engine = index.as_query_engine(similarity_top_k=3)на версію з параметромresponse_mode="compact"і додай системний промпт з вимогою відповідати українською.
💡 Поради для кращого результату
По-перше, розбивай великі документи на логічні частини перед завантаженням — замість одного PDF на 500 сторінок завантаж 10 файлів по темах. LlamaIndex краще індексує тематично однорідні документи, і якість пошуку зростає суттєво. По-друге, додай метадані до документів — перейменуй файли так, щоб назва відображала зміст (наприклад, polityka_vidilennya_vidpustok_2025.pdf замість document1.pdf): це покращує релевантність пошуку. По-третє, використовуй модель Llama 3.3 70B замість 8B для складних запитань — вона дає значно якісніші відповіді, хоча й коштує більше токенів. У файлі config.py просто заміни назву моделі на meta-llama/llama-3.3-70b-instruct. По-четверте, регулярно перебудовуй індекс при додаванні нових документів — просто запусти build_index.py знову, ChromaDB оновить лише змінені дані.

❓ Часті запитання (FAQ)
1. Чи безпечно завантажувати конфіденційні документи?
Embeddings будуються локально на твоєму комп’ютері через HuggingFace-модель — зовні нічого не передається. До OpenRouter відправляються лише фрагменти тексту під час відповіді на запитання. Якщо дані критично конфіденційні — розглянь запуск Ollama локально замість OpenRouter.
2. Скільки документів можна завантажити в базу?
ChromaDB як локальна база обмежена лише твоїм диском. Практично комфортно працювати з кількома сотнями PDF-файлів. При дуже великих обсягах (тисячі документів) варто перейти на хмарний Chroma або Pinecone.
3. Чи підтримує система українську мову в документах?
Так, завдяки моделі paraphrase-multilingual-mpnet-base-v2, яка спеціально навчена на 50+ мовах, включаючи українську. Якість пошуку по україномовних текстах дуже висока.
4. Що робити, якщо OpenRouter недоступний або занадто дорогий?
Встанови Ollama (ollama.com) — безкоштовний інструмент для запуску Llama локально. Потрібно лише змінити api_base на http://localhost:11434/v1 у файлі config.py, і система працюватиме повністю офлайн.
5. Як оновити базу знань новими документами?
Просто додай нові файли в папку documents і запусти python build_index.py знову. Якщо хочеш оновлювати лише нові файли, не перебудовуючи весь індекс — додай перевірку через SimpleDirectoryReader з параметром recursive=True та відстеженням дат модифікації файлів.
🏁 Підсумок
Ти побудував повноцінну RAG-систему: завантажив документи, створив векторну базу з embeddings, підключив Llama через OpenRouter і отримав AI-асистента, який відповідає виключно на основі твоїх матеріалів. Це базова, але цілком робоча архітектура, яку використовують у продакшн-системах.
Починай прямо зараз: зареєструйся на openrouter.ai, візьми 2–3 документи які часто читаєш (інструкції, нотатки, статті) — і запусти свою першу базу знань сьогодні ввечері. Після першого успішного запиту ти зрозумієш, як масштабувати це під будь-яку задачу.
РОЗСИЛКА
📬 Щотижневий AI-дайджест
Найкращі статті про ШІ та автоматизацію — без спаму, лише суть
Без спаму · Відписатись будь-коли

