services.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from qcloud_cos import CosConfig
  2. from qcloud_cos import CosS3Client
  3. import tcvectordb
  4. from tcvectordb.model.ai_database import AIDatabase
  5. from tcvectordb.model.collection_view import CollectionView, Embedding, SplitterProcess, ParsingProcess
  6. from tcvectordb.model.index import Index
  7. from tcvectordb.exceptions import DescribeCollectionException
  8. from settings import settings
  9. cos = CosS3Client(
  10. CosConfig(
  11. Region=settings.region,
  12. SecretId=settings.secret_id,
  13. SecretKey=settings.secret_key,
  14. ),
  15. )
  16. vdb = tcvectordb.RPCVectorDBClient(
  17. url=settings.VDB_config.url,
  18. username=settings.VDB_config.username,
  19. key=settings.VDB_config.key,
  20. )
  21. def create_ai_database_if_not_exists(database_name: str) -> AIDatabase:
  22. if vdb.exists_db(database_name):
  23. return vdb.database(database_name)
  24. else:
  25. return vdb.create_ai_database(database_name)
  26. def create_collection_view_if_not_exists(database: AIDatabase, collection_name: str) -> CollectionView:
  27. try:
  28. return database.collection_view(collection_name)
  29. except DescribeCollectionException:
  30. return database.create_collection_view(
  31. collection_name,
  32. embedding=Embedding(
  33. language='MULTI',
  34. enable_words_embedding=True,
  35. ),
  36. splitter_process=SplitterProcess(
  37. append_title_to_chunk=False,
  38. append_keywords_to_chunk=True,
  39. chunk_splitter=None,
  40. ),
  41. parsing_process=ParsingProcess('VisionModelParsing'),
  42. index=Index(),
  43. )
  44. def create_db_collection_view_if_not_exists(database: str, collection: str) -> CollectionView:
  45. db = create_ai_database_if_not_exists(database)
  46. return create_collection_view_if_not_exists(db, collection)
  47. collection_view = create_db_collection_view_if_not_exists(
  48. settings.VDB_config.database,
  49. settings.VDB_config.collection,
  50. )