This commit is contained in:
Dita Aji Pratama 2026-07-07 05:13:49 +07:00
parent de01227c5d
commit dfa9090198
5 changed files with 22 additions and 48 deletions

View File

@ -1,5 +1,6 @@
model_url = "http://localhost:11434/api/embed" model_url = "http://localhost:11434/api/embed"
model_name = "nomic-embed-text" model_name = "nomic-embed-text"
memories_db_path = "./memories"
memories_table = "knowledge_stories" memories_db_path = "./ragroleplay"
memories_vector_size = 768 memories_vector_size = 768

View File

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

View File

@ -1,6 +1,6 @@
import config, embedding import config, lib.ragroleplay as ragroleplay
text = "Saya lupa password di HRIS AFMS2" text = "Saya lupa password"
vector = embedding.embed_text(config.model_url, config.model_name, text) vector = ragroleplay.embed_text(config.model_url, config.model_name, text)
print("Text:") print("Text:")
print(text) print(text)
print("Vector:") print("Vector:")

View File

@ -1,23 +1,4 @@
import gc, lancedb, pyarrow import config, lib.ragroleplay as ragroleplay
import config
def main():
db = lancedb.connect(config.memories_db_path)
schema = pyarrow.schema([
pyarrow.field('id', pyarrow.uuid(), metadata={'description': 'Unique identifier (UUID)'}),
pyarrow.field('timestamp', pyarrow.timestamp('ms'), metadata={'description': 'When record created'}),
pyarrow.field('relative_time', pyarrow.string(), metadata={'description': 'Explaining when it happen'}),
pyarrow.field('event', pyarrow.string(), metadata={'description': 'What event'}),
pyarrow.field('category', pyarrow.string(), metadata={'description': 'Event category'}),
pyarrow.field('detail', pyarrow.string(), metadata={'description': 'Event detail'}),
pyarrow.field('physical', pyarrow.string(), metadata={'description': 'Character physical state'}),
pyarrow.field('emotional', pyarrow.string(), metadata={'description': 'Character emotional state'}),
pyarrow.field('vector_context', pyarrow.list_(pyarrow.float32(), config.memories_vector_size)),
])
db.create_table(config.memories_table, schema=schema)
print(f'Table "{config.memories_table}" berhasil diproses.')
del db
gc.collect()
if __name__ == "__main__": if __name__ == "__main__":
main() ragroleplay.create_table(config.memories_db_path, config.memories_vector_size)

View File

@ -1,10 +1,10 @@
import gc, lancedb, uuid import gc, lancedb, uuid
from datetime import datetime, timedelta from datetime import datetime, timedelta
import config, embedding import config, lib.ragroleplay as ragroleplay
def main(): def main():
db = lancedb.connect(config.memories_db_path) db = lancedb.connect(config.memories_db_path)
table = db.open_table(config.memories_table) table = db.open_table("knowledge_memories")
now = datetime.now() now = datetime.now()
memories = [ memories = [
@ -121,13 +121,13 @@ def main():
"detail": mem["detail"], "detail": mem["detail"],
"physical": mem["physical"], "physical": mem["physical"],
"emotional": mem["emotional"], "emotional": mem["emotional"],
"vector_context": embedding.embed_text(config.model_url, config.model_name, context_text), "vector_context": ragroleplay.embed_text(config.model_url, config.model_name, context_text),
} }
table.add([row]) table.add([row])
print(f"Menambahkan memori: {mem['event']}") print(f"Menambahkan memori: {mem['event']}")
print("\nTable memori roleplaying dengan vector_context berhasil diproses.") print("\nTable memori roleplaying dengan vector_context berhasil diproses.")
print("Nama table:", config.memories_table) print("Nama table: knowledge_memories")
print("Jumlah row:", table.count_rows()) print("Jumlah row:", table.count_rows())
del table del table