Ollama встречает Qdrant: локальная память для вашего ИИ на Mac

Локальный ИИ с памятью - без облака, без подписки, без отвлекающих факторов

В предыдущие статьи Я рассказал, как настроить Ollama на Mac install. Если вы уже выполнили этот шаг, то теперь у вас есть мощная локальная языковая модель - например, Mistral, LLaMA3 или другая совместимая модель, к которой можно обратиться через REST API.

Однако модель „знает“ только то, что находится в текущей подсказке. Она не запоминает предыдущие разговоры. Не хватает только воспоминаний..


Актуальные темы по искусственному интеллекту

Именно поэтому мы используем Qdrant, современную семантическую векторную базу данных.
В этой статье я покажу вам шаг за шагом:

  • как installier Qdrant на Mac (через Docker)
  • Как создавать вкрапления с помощью Python
  • как сохранять, искать и интегрировать контент в рабочий процесс Ollama
  • и как выглядит полная последовательность запрос→память→ответ

Почему Qdrant?

В Qdrant хранятся не традиционные тексты, а векторы, представляющие смысл текста в виде числового кода. Это означает, что контент может быть найден не только точно, но и семантически схожим - даже если слова различаются.

Таким образом, получается Ollama + Qdrant:

Локальная языковая модель с долговременной памятью - безопасная, управляемая и расширяемая.

Пререквизиты

Пакет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, не требуется для этой статьи)

Qdrant на Docker под Apple macOS

Пример на языке 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. Все остается локальным - и под контролем

Самое большое преимущество: вы сами решаете, что сохранять. Вы решаете, как долго они будут храниться. И: она никогда не покинет ваш компьютер, если вы этого не захотите. В мире, где многие люди слепо полагаются на облачный ИИ, это мощный противовес - особенно для фрилансеров, разработчиков, авторов и предпринимателей.


Текущий обзор использования локальных систем искусственного интеллекта

Что вы думаете о локальном программном обеспечении ИИ, таком как MLX или Ollama?

Приручить 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 - гибкая. Но без четких правил обе системы превращаются в неструктурированную кучу данных. Хитрость заключается не в том, чтобы хранить все - а в том, чтобы хранить только то, что имеет значение, и целенаправленно думать, а не просто запоминать.

Оставить комментарий