faiss.py 883 B

12345678910111213141516171819202122232425262728
  1. # -*- coding: utf-8 -*-
  2. from .__load__ import *
  3. from langchain_community.vectorstores import FAISS
  4. class Db(object):
  5. def __init__(self):
  6. Demeter.service('init')
  7. self.embedding = Demeter.embedding
  8. self.path = File.path() + 'data/db/'
  9. def write(self, id, data):
  10. name = self.name(id)
  11. if File.exists(name):
  12. db = FAISS.load_local(name, embeddings=self.embedding, allow_dangerous_deserialization=True)
  13. db.add_documents(data)
  14. else:
  15. db = FAISS.from_documents(data, embedding=self.embedding)
  16. db.save_local(name)
  17. return db
  18. def read(self, id):
  19. db = FAISS.load_local(self.name(id), embeddings=self.embedding, allow_dangerous_deserialization=True)
  20. return db
  21. def name(self, name):
  22. name = str(name)
  23. return File.dest(self.path, Demeter.md5(name))