Νικόλαος Λυμπιτάκης, Κατασκευή ενός RAG Chatbot για
Ξενοδοχειακή Υποστήριξη
47
# Επιλέγουµε µόνο τα ζεύγη ερώτησης-απάντησης µε θετικό feedback
#('good')
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute(“SELECT prompt, response FROM conversation_turns WHERE
feedback = 'good'“)
good_conversations = cursor.fetchall()
conn.close()
…
# Προετοιµασία Δεδοµένων για το Vector Store. Διαχωρίζουµε τα δεδοµένα
#σε λίστες για ευρετηρίαση.
# documents: Οι ερωτήσεις των χρηστών (κείµενο προς
#αναζήτηση/embedding).
# metadatas: Οι απαντήσεις του chatbot (πληροφορία προς ανάκτηση).
documents = []
metadatas = []
for prompt, response in good_conversations:
documents.append(prompt)
metadatas.append({“response”: response})
# Ενηµέρωση ή Δηµιουργία του FAISS Index. Φορτώνουµε το υπάρχον vector
#store για να προσθέσουµε τα νέα δεδοµένα. Αν δεν υπάρχει,
#δηµιουργούµε ένα καινούργιο.
try:
vector_store = FAISS.load_local(VECTOR_STORE_PATH, embeddings,
allow_dangerous_deserialization=True)
vector_store.add_texts(texts=documents, metadatas=metadatas)
except Exception:
vector_store = FAISS.from_texts(texts=documents,
embedding=embeddings, metadatas=metadatas)
Εικόνα 18 : Kώδικας από update_good_conversations_vector_store.py