Локальный ИИ с памятью - без облака, без подписки, без отвлекающих факторов
В предыдущие статьи Я рассказал, как настроить Ollama на Mac install. Если вы уже выполнили этот шаг, то теперь у вас есть мощная локальная языковая модель - например, Mistral, LLaMA3 или другая совместимая модель, к которой можно обратиться через REST API.
Однако модель „знает“ только то, что находится в текущей подсказке. Она не запоминает предыдущие разговоры. Не хватает только воспоминаний..
Именно поэтому мы используем Qdrant, современную семантическую векторную базу данных.
В этой статье я покажу вам шаг за шагом:
- как installier Qdrant на Mac (через Docker)
- Как создавать вкрапления с помощью Python
- как сохранять, искать и интегрировать контент в рабочий процесс Ollama
- и как выглядит полная последовательность запрос→память→ответ
Почему Qdrant?
В Qdrant хранятся не традиционные тексты, а векторы, представляющие смысл текста в виде числового кода. Это означает, что контент может быть найден не только точно, но и семантически схожим - даже если слова различаются.
Таким образом, получается Ollama + Qdrant:
Локальная языковая модель с долговременной памятью - безопасная, управляемая и расширяемая.
Пререквизиты
- Ollama - это installiert и бегает (→ например, ollama run mistral)
- Докер - это installiert: https://www.docker.com/products/docker-desktop
- Python 3.9+
Пакет1TP12Тация от Qdrant:
pip install qdrant-client sentence-transformers
Запуск Qdrant (Docker)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
Затем запускается Qdrant:
http://localhost:6333 (REST API)
http://localhost:6334 (gRPC, не требуется для этой статьи)

Пример на языке Python для Ollama + Qdrant
Теперь мы напишем простой базовый скрипт, который:
- принимает приглашение пользователя
- генерирует вектор встраивания из этого
- поиск семантически схожих воспоминаний в Qdrant
- ответ генерируется с контекстом через Ollama
- сохраняет новый разговор в качестве напоминания
Python-Script: ollama_memory.py
import requests
from sentence_transformers import SentenceTransformer
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
# Einstellungen
OLLAMA_URL = "http://localhost:11434/api/generate"
COLLECTION_NAME = "memory"
VECTOR_SIZE = 384 # für 'all-MiniLM-L6-v2'
# Lade Embedding-Modell
embedder = SentenceTransformer("all-MiniLM-L6-v2")
# Verbinde mit Qdrant
qdrant = QdrantClient(host="localhost", port=6333)
# Erstelle Collection (einmalig)
def create_collection():
if COLLECTION_NAME not in qdrant.get_collections().collections:
qdrant.recreate_collection(
collection_name=COLLECTION_NAME,
vectors_config=VectorParams(size=VECTOR_SIZE, distance=Distance.COSINE)
)
# Füge Eintrag ins Gedächtnis hinzu
def add_to_memory(text: str):
vector = embedder.encode(text).tolist()
point = PointStruct(id=hash(text), vector=vector, payload={"text": text})
qdrant.upsert(collection_name=COLLECTION_NAME, points=[point])
# Suche im Gedächtnis
def search_memory(query: str, top_k=3):
vector = embedder.encode(query).tolist()
hits = qdrant.search(
collection_name=COLLECTION_NAME,
query_vector=vector,
limit=top_k
)
return [hit.payload["text"] for hit in hits]
# Sende Anfrage an Ollama
def query_ollama(context: list[str], user_prompt: str):
prompt = "\n\n".join(context + [user_prompt])
response = requests.post(OLLAMA_URL, json={
"model": "mistral",
"prompt": prompt,
"stream": False
})
return response.json()["response"]
# Ablauf
def main():
create_collection()
print("Frage an die KI:")
user_prompt = input("> ")
context = search_memory(user_prompt)
answer = query_ollama(context, user_prompt)
print("\nAntwort von Ollama:")
print(answer.strip())
# Speichern der Konversation
full_entry = f"Frage: {user_prompt}\nAntwort: {answer.strip()}"
add_to_memory(full_entry)
if __name__ == "__main__":
main()
Заметки о практике
Вы также можете использовать свои собственные модели встраивания, например, через Ollama (например, nomic-embed-text) или модели Hugging Face.
Qdrant поддерживает фильтры полезной нагрузки, временные периоды и поля (очень полезно для последующего расширения!)
Идентификатор hash(text)-ID достаточен для простых тестов, для профессиональных приложений следует использовать UUID
Локальный ИИ с памятью - и что вы можете с ним сделать
В предыдущих главах я показал вам, как создать настоящую локальную память ИИ на Mac с помощью Ollama и Qdrant. Установку, которая работает без облака, без подписки и без внешних серверов - быстро, безопасно, приватно.
Но что теперь?
Для чего на самом деле можно использовать эту технологию? Что с ней возможно - сегодня, завтра, послезавтра?
Ответ: довольно много.
Потому что перед вами не просто чатбот. Это независимая от платформы мыслящая машина с долговременной памятью. А это открывает двери.
🔍 1. база данных личных знаний
Вы можете использовать Ollama + Qdrant в качестве вашей личной долговременной памяти.
Документы, заметки из разговоров, идеи - все, что вы ему скажете, может быть семантически сохранено и найдено.
Пример:
„Какова была моя бизнес-идея в прошлый четверг?“
„Какие клиенты хотели получить обновление в марте?“
Вместо того чтобы искать по папкам, вы просто спрашиваете свою систему. Особенно интересно то, что он работает и с неточными вопросами, поскольку Qdrant осуществляет семантический поиск, а не только по ключевым словам.
📄 2. автоматическое протоколирование и подведение итогов
В сочетании с аудио- или текстовым вводом система может вести журнал:
- Заметки на совещаниях
- Звонки с клиентами
- Ежедневные журналы или истории проектов
Эти данные автоматически поступают в память Qdrant и могут быть запрошены позже, как ассистент:
„Что сказал господин Майер по поводу доставки?“
„На что был похож процесс в проекте XY?“
🧠 3. персональный тренер или помощник по ведению дневника
Регулярно записывая мысли, настроение или решения, вы можете создать себе компаньона для размышлений:
„Каков был мой самый большой прогресс в этом месяце?“
„Как я реагировал на неудачи в те времена?“
Со временем система узнает вас - и становится настоящим зеркалом, а не просто чатботом.
💼 4. бизнес-приложения с FileMaker
Если вы, как и я, используете FileMaker, вы можете подключить эту установку напрямую:
- Отправляйте подсказки с FileMaker
- Автоматическое получение и сохранение ответов
- Управление доступом к памяти напрямую через REST API или сценарий оболочки
Это создает чрезвычайно мощную комбинацию:
- FileMaker = Передняя панель, пользовательский интерфейс, центр управления
- Ollama = Языковой интеллект
- Qdrant = семантическая долговременная память
Результат: настоящий компонент искусственного интеллекта для решений FileMaker - локальный, безопасный и индивидуальный.
🛠️ 5. Поддержка в повседневной жизни: напоминания, идеи, рекомендации
„Напомните мне об этой идее на следующей неделе“.“
„Какие книги я уже рекомендовал вам?“
„Что я могу предложить господину Мюллеру?“
Благодаря логике целевого запоминания (временные метки, категории, пользователи) вы можете целенаправленно структурировать свою память и использовать ее во многих сферах жизни и бизнеса.
🤖 6. основа для агентской системы
Если подумать заранее, то с помощью этой установки можно создавать и агентоподобные системы:
- ИИ берет на себя выполнение простых задач
- ИИ распознает закономерности с течением времени
- ИИ дает упреждающие подсказки
Пример:
„На этой неделе вы четыре раза задавали один и тот же вопрос - хотите ли вы сохранить заметку?“
„Поразительное количество клиентов упомянули этот продукт - мне подвести итог?“
🌐 7. интеграция с другими инструментами
Система может быть легко связана с другими инструментами:
- Neo4j, для графического отображения семантических отношений
- Файлы и PDF-файлы, для автоматического индексирования содержимого
- Парсер почты, анализировать и запоминать электронные письма
- Голосовые помощники, взаимодействовать с помощью голоса
🔐 8. Все остается локальным - и под контролем
Самое большое преимущество: вы сами решаете, что сохранять. Вы решаете, как долго они будут храниться. И: она никогда не покинет ваш компьютер, если вы этого не захотите. В мире, где многие люди слепо полагаются на облачный ИИ, это мощный противовес - особенно для фрилансеров, разработчиков, авторов и предпринимателей.
Текущий обзор использования локальных систем искусственного интеллекта
Приручить Ollama + Qdrant: Как придать локальному ИИ структуру, правила и тонкую настройку
Тот, кто взял на себя труд установить Ollama и Qdrant локально на Mac, уже достиг больших успехов. Теперь у вас есть:
- ИИ на местном языке
- Семантическая память
- И функционирующий трубопровод, который отображает Prompt → Memory → Ollama → Response
Но каждый, кто работает с ней, быстро понимает: ей нужны правила. Структура. Порядок.
Ведь без контроля ваш помощник быстро превратится в болтуна, который помнит слишком много, постоянно повторяется или вспоминает неважное.
🧭 Чего еще не хватает?
У оркестра тоже есть дирижер. И теперь это именно ваша задача: управлять, а не просто использовать.
Модуль 1: „Маршрутизатор“ для логики памяти
Вместо того чтобы тупо сохранять все подряд или тупо искать все подряд, вам следует заранее решить, нужно ли вообще что-то сохранять или загружать. Это можно сделать, например, с помощью простого релевантного маршрутизатора, который вы помещаете между подсказкой и памятью:
ПримерПроверьте актуальность через запрос к самому Ollama
def is_relevant_for_memory(prompt, response):
prüf_prompt = f"""
Nutzer hat gefragt: "{prompt}"
Die KI hat geantwortet: "{response}"
Sollte man sich diesen Dialog langfristig merken? Antworte nur mit 'Ja' oder 'Nein'.
"""
result = query_ollama([], prüf_prompt).strip().lower()
return result.startswith("ja")
Поэтому вы даете Ollama задание оценить его ответ - и только если он классифицируется как релевантный, вы сохраняете его в Qdrant.
Модуль 2: Исключение старых сообщений (ограничение контекста)
Особенно при длительных сессиях становится проблематично, если старые сообщения постоянно появляются в контексте. Модель не забывает - она увязает.
РешениеОграничить контекстное окно.
Вы можете сделать это двумя способами:
Метод 1: Ограничить количество просмотров
context = search_memory(user_prompt, top_k=3)
Здесь загружается только то, что семантически релевантно - не все.
Метод 2: Ограничьте время
# Nur Nachrichten der letzten 7 Tage now = datetime.utcnow() filter = Filter( must=[ FieldCondition(key="timestamp", range=Range(gte=now - timedelta(days=7))) ] )
Поэтому вы можете „отсечь“ время, если система зайдет слишком далеко в прошлое.
Модуль 3: Знакомство с контекстными весами и метками
Не все записи в вашей памяти имеют одинаковую ценность. Вы можете придать им вес или разделить на категории:
- Исправлено (например, „Пользователя зовут Маркус“)
- Временные (например, „Сегодня вторник“).
- Ситуация (например, „Чат с сегодняшнего дня 10:30 утра“)
Qdrant поддерживает так называемые полезные нагрузки - то есть дополнительную информацию в каждой записи. Это позволяет впоследствии отфильтровать или расставить приоритеты.
Модуль 4: Тонкая настройка с помощью подсказок
Сам подсказчик является мощным устройством управления.
Вот несколько приемов, которые вы можете использовать, чтобы сделать Ollama умнее:
Пример подсказки с инструкциями:
Вы - местный помощник с семантической памятью. Если вы обнаружили несколько воспоминаний, используйте только три наиболее значимых. Не обращайтесь к информации старше 10 дней, если она не отмечена явным образом. Игнорируйте тривиальные напоминания, такие как „Доброе утро“ или „Спасибо“. Отвечайте точно и в стиле опытного консультанта.
Это позволяет выполнять тонкую настройку непосредственно в самой подсказке - без новых моделей, без обучения.
И: Вы можете генерировать подсказки динамически - в зависимости от ситуации.
Модуль 5: Гигиена хранения
По мере роста памяти она становится все более запутанной.
Простой сценарий обслуживания, удаляющий нерелевантный или дублирующий контент, на вес золота.
Пример:
„Забудьте обо всем, что связано с ‚погодой‘“.“
„Удалять записи, которые старше 3 месяцев и никогда не извлекались“.“
Qdrant поддерживает эту функцию через API - и вы можете автоматизировать ее, например, раз в неделю.
Модуль 6: FileMaker в качестве панели управления
Если вы, как и я, работаете с FileMaker, вы можете управлять всем этим удаленно через REST-API:
- Отправляйте быстро
- Получить контекст
- Ответ получен
- Проведите оценку
- Сохранить или забыть
Все, что вам нужно, - это небольшой REST-модуль в FileMaker (вставка из URL с JSON) и несколько скриптов.
Результат: интерфейс, позволяющий управлять искусственным интеллектом, как живым ноутбуком - но с интеллектом.
🔚 Вывод: ИИ хорош лишь настолько, насколько хорошо его руководство
Ollama - мощный. Qdrant - гибкая. Но без четких правил обе системы превращаются в неструктурированную кучу данных. Хитрость заключается не в том, чтобы хранить все - а в том, чтобы хранить только то, что имеет значение, и целенаправленно думать, а не просто запоминать.

