memories/memories_semantic_search.py

35 lines
1.2 KiB
Python
Raw Normal View History

2026-07-03 17:53:18 +07:00
import gc, sys, lancedb
2026-07-07 05:13:49 +07:00
import config, lib.ragroleplay as ragroleplay
2026-07-03 17:53:18 +07:00
2026-07-07 05:13:49 +07:00
def memories_check(question, search_limit):
2026-07-03 17:53:18 +07:00
db = lancedb.connect(config.memories_db_path)
2026-07-07 05:13:49 +07:00
table = db.open_table("knowledge_memories")
query_vector = ragroleplay.embed_text(config.model_url, config.model_name, question)
results = table.search(query_vector, vector_column_name="vector_context").limit(search_limit).to_list()
2026-07-03 17:53:18 +07:00
2026-07-07 05:13:49 +07:00
print("")
2026-07-03 17:53:18 +07:00
print(f"Pertanyaan: {question}")
2026-07-07 05:13:49 +07:00
print("")
2026-07-03 17:53:18 +07:00
if not results:
print("Tidak ada memori yang ditemukan.")
else:
print(f"Ditemukan {len(results)} memori yang relevan berdasarkan KONTEKS:\n")
for i, row in enumerate(results, 1):
2026-07-07 05:13:49 +07:00
print(f"Memori #{i}")
2026-07-03 17:53:18 +07:00
print(f"Kapan: {row['relative_time']}")
print(f"Kejadian: {row['event']}")
print(f"Detail: {row['detail']}")
print(f"Kondisi Fisik: {row['physical']}")
print(f"Emosi: {row['emotional']}")
print(f"Kategori: {row['category']}")
print(f"Skor Jarak: {row.get('_distance', 'N/A')}")
2026-07-07 05:13:49 +07:00
print("")
2026-07-03 17:53:18 +07:00
del table
del db
gc.collect()
if __name__ == "__main__":
2026-07-07 05:13:49 +07:00
memories_check(sys.argv[1], 3)