Локальный ИИ с памятью - без облака, без подписки, без отвлекающих факторов
В предыдущие статьи Я рассказал, как настроить 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 - гибкая. Но без четких правил обе системы превращаются в неструктурированную кучу данных. Хитрость заключается не в том, чтобы хранить все - а в том, чтобы хранить только то, что имеет значение, и целенаправленно думать, а не просто запоминать.
Новая серия статей: Истории ChatGPT как база знаний для вашего ИИ
Если вы уже создали свою собственную память ИИ с помощью Ollama и Qdrant, стоит взглянуть на новую серию статей, которая начинается прямо здесь. Она посвящена тому, как Интегрируйте экспорт данных ChatGPT в эту систему lets. Многие пользователи даже не подозревают, что могут экспортировать всю историю своих чатов и что эти данные являются ценным источником знаний. В этой серии статей я покажу вам, как анализировать эти разговоры, преобразовывать их во вкрапления и затем импортировать в векторную базу данных. Это позволит вашему локальному ИИ впоследствии получить доступ к предыдущим разговорам и использовать их в качестве контекста для ответов. Таким образом, из отдельных диалогов шаг за шагом вырастает персональный архив знаний.
Часто задаваемые вопросы
- Зачем локальному ИИ вообще нужна „память“? Разве языковой модели недостаточно?
Языковая модель работает только с текущей подсказкой и контекстом, который вы ей задаете в данный момент. Поэтому она не может постоянно помнить предыдущие разговоры, документы или информацию. Именно здесь на помощь приходит локальная память. Дополнительная база данных позволяет ИИ сохранять предыдущий контент и извлекать его при необходимости. При ответе модель получает не только ваш текущий вопрос, но и соответствующую информацию из этой памяти. В результате ответы получаются гораздо более последовательными и обоснованными. Без такой системы языковая модель, по сути, остается генератором чистого текста без каких-либо долгосрочных знаний о ваших собственных данных или проектах. - Что такое Qdrant и почему он используется в этой системе?
Qdrant - это современная векторная база данных, специально разработанная для семантического поиска. В отличие от традиционных баз данных, она хранит информацию не просто в виде текста, а в виде так называемых векторов - математических представлений смысла. Это позволяет искать в контенте не только одинаковые слова, но и близкие по смыслу. Так, если вы задаете вопрос, Qdrant может найти подходящие фрагменты текста из вашей базы знаний, даже если они не содержат точно таких же терминов. В сочетании с языковой моделью это создает своего рода интеллектуальную память для ИИ. - Что означает термин „RAG“, который часто используется в этом контексте?
RAG расшифровывается как „Retrieval Augmented Generation“. Это техника, при которой языковая модель извлекает дополнительную информацию из базы данных, прежде чем дать ответ. Таким образом, модель не только генерирует свой ответ на основе обучения, но и дополняет его подходящей информацией из источника знаний. Этот метод решает типичную проблему языковых моделей: Они знают только то, что было усвоено во время обучения. Вместо этого RAG позволяет им обращаться к текущим или личным данным - например, к документации, веб-сайтам или собственным заметкам. - Как на самом деле работают Ollama и Qdrant?
В этой схеме Ollama играет роль языковой модели, а Qdrant - семантической памяти. Когда вы задаете вопрос, Qdrant сначала ищет соответствующие фрагменты текста. Затем эти результаты вместе с вашим вопросом передаются в языковую модель. Модель использует эту дополнительную информацию, чтобы сформулировать обоснованный ответ. Типичная последовательность действий такова: запрос → поиск в памяти → расширение контекста → генерация ответа. - Какие типы данных можно включить в память ИИ?
Практически все, что может быть преобразовано в текст. Это документация, веб-сайты, файлы Markdown, PDF-файлы, записи в базе данных или даже личные заметки. Важно только, чтобы перед сохранением в базе данных контент можно было разбить на небольшие текстовые фрагменты. Эти так называемые „куски“ впоследствии становятся основой для семантического поиска. Это позволяет искусственному интеллекту получать доступ к отдельным нужным разделам вместо того, чтобы искать по всему документу. - Почему вместо обычного текстового поиска используется векторная база данных?
Классические поисковые системы обычно работают с ключевыми словами. Это означает, что они находят только те результаты, которые содержат точно такие же термины. Векторная база данных, напротив, ищет по смыслу. Поэтому она может находить тексты, схожие по содержанию, даже если в них использованы другие слова. Это очень важно для систем искусственного интеллекта, поскольку вопросы часто формулируются иначе, чем в исходных документах. Семантический поиск делает связь между вопросом и ответом гораздо более надежной. - Как на самом деле преобразуются тексты в векторы?
Для этого используются так называемые модели встраивания. Эти модели анализируют тексты и преобразуют их в числовые векторы, отражающие их смысл. Таким образом, каждый фрагмент текста получает математическое представление в так называемом векторном пространстве. Схожий контент располагается ближе друг к другу, чем совершенно разные темы. Если позже будет задан вопрос, он также преобразуется в вектор. Qdrant может очень быстро найти в памяти наиболее похожие записи. - Почему Qdrant часто используется через Docker installiert?
Docker значительно упрощает установку сложного программного обеспечения. Вместо того чтобы устанавливать множество отдельных зависимостей вручную, Qdrant просто запускается в контейнере. Это означает, что установка надежно работает на разных системах и может быть легко запущена или остановлена. Этот метод особенно удобен на Mac, поскольку позволяет сохранить чистоту системы и одновременно обеспечить стабильную среду для базы данных. - Могу ли я работать с этой системой полностью автономно?
Да, это одно из самых больших преимуществ данной архитектуры. И языковая модель, и база данных векторов работают локально на вашем компьютере. Это означает, что никакие данные не отправляются на внешние серверы. Таким образом, создается полностью приватная среда ИИ. Это решающее преимущество перед облачными системами, особенно для конфиденциальных данных или внутренних документов компании. - Насколько большой может стать такая локальная память ИИ?
Это зависит, прежде всего, от объема памяти и производительности системы. Современные векторные базы данных легко справляются с миллионами текстовых фрагментов. Однако для многих персональных проектов достаточно всего нескольких тысяч документов, чтобы создать очень мощную систему знаний. Качество структуры данных важнее, чем количество информации. - Может ли ИИ действительно „учиться“ с помощью этой системы?
Не в классическом смысле. Сама языковая модель не переобучается. Вместо этого знания хранятся вне модели и извлекаются по мере необходимости. Хотя это и создает впечатление, что ИИ способен обучаться, на самом деле он лишь получает доступ к постоянно пополняющемуся хранилищу знаний. У такого подхода есть одно важное преимущество: новая информация может быть добавлена в любое время без необходимости переобучения модели. - К каким практическим применениям приведет такая локальная память ИИ?
Возможности удивительно разнообразны. Например, вы можете создать личную базу знаний, сделать техническую документацию доступной для поиска или проанализировать внутренние документы компании. Авторы, разработчики или исследователи также выигрывают от этого, поскольку могут сделать большие объемы информации доступными в структурированном виде. По сути, создается своего рода личный исследовательский помощник, который понимает ваши собственные данные. - Можно ли интегрировать несколько источников данных одновременно?
Да, Qdrant позволяет присваивать каждому фрагменту текста дополнительные метаданные, такие как источник, категория или язык. Это позволяет управлять различными базами данных совместно. Эти метаданные можно даже специально фильтровать в процессе поиска. Например, искусственный интеллект может рассматривать только контент из определенной документации или конкретного проекта. - Чем эта система отличается от классических чат-ботов?
Большинство чат-ботов работают исключительно с набором обучающих данных. Поэтому они не могут предоставить никакой конкретной информации о вашем собственном контенте. Система RAG, напротив, сочетает языковую модель с индивидуальной базой знаний. Это позволяет ИИ предоставлять ответы, непосредственно учитывающие ваши собственные данные. Это делает его гораздо более полезным для продуктивной работы. - Какую роль играет Python в этой установке?
Python часто используется для управления связью между языковой моделью и базой данных. С помощью нескольких скриптов можно считывать тексты, преобразовывать их в векторы и сохранять в Qdrant. Python также может выполнять поиск и передавать найденные результаты в языковую модель. Таким образом, создается гибкий конвейер, который можно настроить в соответствии с собственными требованиями. - Неужели создание такой системы - удел только разработчиков?
Не обязательно. Хотя настройка системы требует определенных технических знаний, многие необходимые инструменты сегодня стали намного проще. Немного терпения - и работоспособная система может быть создана даже без глубоких знаний в области программирования. Тот, кто хоть раз имел с ней дело, быстро поймет огромный потенциал таких локальных инфраструктур ИИ. - Каковы пределы локальной памяти ИИ?
Самое важное ограничение - это вычислительная мощность вашего компьютера. Большие модели или огромные базы данных знаний могут потребовать больше памяти и мощности процессора. Качество ответов также сильно зависит от структуры данных. Если документы плохо подготовлены, ИИ может дать хорошие результаты лишь в ограниченной степени. - Почему эта комбинация Ollama и Qdrant считается особенно интересной архитектурой для локального ИИ?
Потому что в нем объединены два важнейших компонента: мощная языковая модель и быстрая семантическая база данных. Вместе они создают полноценную рабочую среду ИИ, которой можно управлять полностью локально. Это позволяет создавать персональные системы знаний, интеллектуальные поисковые системы или специализированных помощников - без зависимости от облака и с полным контролем над собственными данными.









