in holo-chatbot-webui/main.py [0:0]
def connect_db(self):
embedding_model = self.cfg['embedding']['embedding_model']
model_dir = self.cfg['embedding']['model_dir']
self.embed = HuggingFaceEmbeddings(model_name=os.path.join(model_dir, embedding_model), model_kwargs={'device': 'cpu'})
emb_dim = cfg['embedding']['embedding_dimension']
if 'ADBCfg' in self.cfg:
start_time = time.time()
connection_string_adb = AnalyticDB.connection_string_from_db_params(
host=self.cfg['ADBCfg']['PG_HOST'],
database='postgres',
user=self.cfg['ADBCfg']['PG_USER'],
password=self.cfg['ADBCfg']['PG_PASSWORD'],
driver='psycopg2cffi',
port=5432,
)
vector_db = AnalyticDB(
embedding_function=self.embed,
embedding_dimension=emb_dim,
connection_string=connection_string_adb,
# pre_delete_collection=True,
)
end_time = time.time()
print("Connect AnalyticDB success. Cost time: {} s".format(end_time - start_time))
elif 'HOLOCfg' in self.cfg:
start_time = time.time()
connection_string_holo = Hologres.connection_string_from_db_params(
host=self.cfg['HOLOCfg']['PG_HOST'],
port=self.cfg['HOLOCfg']['PG_PORT'],
database=self.cfg['HOLOCfg']['PG_DATABASE'],
user=self.cfg['HOLOCfg']['PG_USER'],
password=self.cfg['HOLOCfg']['PG_PASSWORD']
)
vector_db = Hologres(
embedding_function=self.embed,
ndims=emb_dim,
connection_string=connection_string_holo,
)
end_time = time.time()
print("Connect Hologres success. Cost time: {} s".format(end_time - start_time))
elif 'ElasticSearchCfg' in self.cfg:
start_time = time.time()
vector_db = ElasticsearchStore(
es_url=self.cfg['ElasticSearchCfg']['ES_URL'],
index_name=self.cfg['ElasticSearchCfg']['ES_INDEX'],
es_user=self.cfg['ElasticSearchCfg']['ES_USER'],
es_password=self.cfg['ElasticSearchCfg']['ES_PASSWORD'],
embedding=self.embed
)
end_time = time.time()
print("Connect ElasticsearchStore success. Cost time: {} s".format(end_time - start_time))
elif 'OpenSearchCfg' in self.cfg:
start_time = time.time()
print("Start Connect AlibabaCloudOpenSearch ")
settings = AlibabaCloudOpenSearchSettings(
endpoint=self.cfg['OpenSearchCfg']['endpoint'],
instance_id=self.cfg['OpenSearchCfg']['instance_id'],
datasource_name=self.cfg['OpenSearchCfg']['datasource_name'],
username=self.cfg['OpenSearchCfg']['username'],
password=self.cfg['OpenSearchCfg']['password'],
embedding_index_name=self.cfg['OpenSearchCfg']['embedding_index_name'],
field_name_mapping={
"id": self.cfg['OpenSearchCfg']['field_name_mapping']['id'],
"document": self.cfg['OpenSearchCfg']['field_name_mapping']['document'],
"embedding": self.cfg['OpenSearchCfg']['field_name_mapping']['embedding'],
"source": self.cfg['OpenSearchCfg']['field_name_mapping']['source'],
},
)
vector_db = AlibabaCloudOpenSearch(
embedding=self.embed, config=settings
)
end_time = time.time()
print("Connect AlibabaCloudOpenSearch success. Cost time: {} s".format(end_time - start_time))
else:
print("Not config any database, use FAISS-cpu default.")
vector_db = None
return vector_db