Initial commit: Pegas Memory (PG + Qdrant + Memgraph, MCP server, 14 tools)

This commit is contained in:
n1kt4r committed 2026-10-15 13:40:06 +05:00
commit 83e77ea8c9
24 files changed
+2201

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
"""Инициализация: применить schema.sql + создать коллекцию Qdrant."""
import sys, pathlib
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))
from pegas_memory import config, db, qdrant_store
def main():
print("Применяю schema.sql к", config.PG_DSN.split('@')[-1])
sql = pathlib.Path(__file__).resolve().parents[1] / "schema.sql"
conn = db.connect()
with conn.cursor() as cur:
cur.execute(sql.read_text())
conn.commit()
print(" -> schema OK")
print("Создаю коллекцию Qdrant", config.QDRANT_COLLECTION, "(dim=%d)" % config.EMBED_DIM)
qdrant_store.ensure_collection()
print(" -> collection OK")
# проверить эмбеддинг
v = __import__('pegas_memory.embedding', fromlist=['embed']).embed("проверка")
print(" -> embedding dim:", len(v))
print("DONE")
if __name__ == "__main__":
main()
+32
View File
@@ -0,0 +1,32 @@
"""Smoke-тест: текст → атомы → PG → Qdrant → поиск."""
import sys, pathlib
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))
from pegas_memory import db, pipeline, outbox_sync, qdrant_store
SAMPLE = '''
PostgreSQL — это объектно-реляционная система управления базами данных.
pgvector — расширение PostgreSQL для хранения векторов и поиска по сходству.
Qdrant — специализированная векторная база данных, быстрее pgvector на больших объёмах.
Memgraph — in-memory графовая база данных, использует язык запросов Cypher.
EmbeddingGemma 2 — модель эмбеддингов Google, размерность 768.
'''
def main():
conn = db.connect()
print("Ингест тестового текста...")
stats = pipeline.ingest_text(conn, SAMPLE, title="smoke-test", min_confidence=0.3)
print(" stats:", stats)
print("Outbox-синк → Qdrant...")
s = outbox_sync.sync_all(conn)
print(" sync:", s)
print("Поиск 'векторная база данных'...")
hits = qdrant_store.search("векторная база данных", top_k=3)
for h in hits:
print(f" [{h['score']:.3f}] ({h['type']}) {h['claim'][:80]}")
print("DONE")
if __name__ == "__main__":
main()