H Kevin Hu commited on
Commit
f947a67
·
1 Parent(s): f7d04ed

Fix index=true (#1734)

Browse files

### What problem does this PR solve?

### Type of change

- [x] Refactoring
---------

Co-authored-by: Kevin Hu <[email protected]>

Files changed (1) hide show
  1. api/db/db_models.py +192 -135
api/db/db_models.py CHANGED
@@ -144,10 +144,10 @@ def remove_field_name_prefix(field_name):
144
 
145
 
146
  class BaseModel(Model):
147
- create_time = BigIntegerField(null=True)
148
- create_date = DateTimeField(null=True)
149
- update_time = BigIntegerField(null=True)
150
- update_date = DateTimeField(null=True)
151
 
152
  def to_json(self):
153
  # This function is obsolete
@@ -234,7 +234,7 @@ class BaseModel(Model):
234
  def insert(cls, __data=None, **insert):
235
  if isinstance(__data, dict) and __data:
236
  __data[cls._meta.combined["create_time"]
237
- ] = utils.current_timestamp()
238
  if insert:
239
  insert["create_time"] = utils.current_timestamp()
240
 
@@ -248,7 +248,7 @@ class BaseModel(Model):
248
  return {}
249
 
250
  normalized[cls._meta.combined["update_time"]
251
- ] = utils.current_timestamp()
252
 
253
  for f_n in AUTO_DATE_TIMESTAMP_FIELD_PREFIX:
254
  if {f"{f_n}_time", f"{f_n}_date"}.issubset(cls._meta.combined.keys()) and \
@@ -373,9 +373,9 @@ def fill_db_model_object(model_object, human_model_dict):
373
 
374
  class User(DataBaseModel, UserMixin):
375
  id = CharField(max_length=32, primary_key=True)
376
- access_token = CharField(max_length=255, null=True)
377
- nickname = CharField(max_length=100, null=False, help_text="nicky name")
378
- password = CharField(max_length=255, null=True, help_text="password")
379
  email = CharField(
380
  max_length=255,
381
  null=False,
@@ -386,28 +386,32 @@ class User(DataBaseModel, UserMixin):
386
  max_length=32,
387
  null=True,
388
  help_text="English|Chinese",
389
- default="Chinese" if "zh_CN" in os.getenv("LANG", "") else "English")
 
390
  color_schema = CharField(
391
  max_length=32,
392
  null=True,
393
  help_text="Bright|Dark",
394
- default="Bright")
 
395
  timezone = CharField(
396
  max_length=64,
397
  null=True,
398
  help_text="Timezone",
399
- default="UTC+8\tAsia/Shanghai")
400
- last_login_time = DateTimeField(null=True)
401
- is_authenticated = CharField(max_length=1, null=False, default="1")
402
- is_active = CharField(max_length=1, null=False, default="1")
403
- is_anonymous = CharField(max_length=1, null=False, default="0")
404
- login_channel = CharField(null=True, help_text="from which user login")
 
405
  status = CharField(
406
  max_length=1,
407
  null=True,
408
  help_text="is it validate(0: wasted,1: validate)",
409
- default="1")
410
- is_superuser = BooleanField(null=True, help_text="is root", default=False)
 
411
 
412
  def __str__(self):
413
  return self.email
@@ -422,35 +426,41 @@ class User(DataBaseModel, UserMixin):
422
 
423
  class Tenant(DataBaseModel):
424
  id = CharField(max_length=32, primary_key=True)
425
- name = CharField(max_length=100, null=True, help_text="Tenant name")
426
- public_key = CharField(max_length=255, null=True)
427
- llm_id = CharField(max_length=128, null=False, help_text="default llm ID")
428
  embd_id = CharField(
429
  max_length=128,
430
  null=False,
431
- help_text="default embedding model ID")
 
432
  asr_id = CharField(
433
  max_length=128,
434
  null=False,
435
- help_text="default ASR model ID")
 
436
  img2txt_id = CharField(
437
  max_length=128,
438
  null=False,
439
- help_text="default image to text model ID")
 
440
  rerank_id = CharField(
441
  max_length=128,
442
  null=False,
443
- help_text="default rerank model ID")
 
444
  parser_ids = CharField(
445
  max_length=256,
446
  null=False,
447
- help_text="document processors")
448
- credit = IntegerField(default=512)
 
449
  status = CharField(
450
  max_length=1,
451
  null=True,
452
  help_text="is it validate(0: wasted,1: validate)",
453
- default="1")
 
454
 
455
  class Meta:
456
  db_table = "tenant"
@@ -458,15 +468,16 @@ class Tenant(DataBaseModel):
458
 
459
  class UserTenant(DataBaseModel):
460
  id = CharField(max_length=32, primary_key=True)
461
- user_id = CharField(max_length=32, null=False)
462
- tenant_id = CharField(max_length=32, null=False)
463
- role = CharField(max_length=32, null=False, help_text="UserTenantRole")
464
- invited_by = CharField(max_length=32, null=False)
465
  status = CharField(
466
  max_length=1,
467
  null=True,
468
  help_text="is it validate(0: wasted,1: validate)",
469
- default="1")
 
470
 
471
  class Meta:
472
  db_table = "user_tenant"
@@ -474,15 +485,16 @@ class UserTenant(DataBaseModel):
474
 
475
  class InvitationCode(DataBaseModel):
476
  id = CharField(max_length=32, primary_key=True)
477
- code = CharField(max_length=32, null=False)
478
- visit_time = DateTimeField(null=True)
479
- user_id = CharField(max_length=32, null=True)
480
- tenant_id = CharField(max_length=32, null=True)
481
  status = CharField(
482
  max_length=1,
483
  null=True,
484
  help_text="is it validate(0: wasted,1: validate)",
485
- default="1")
 
486
 
487
  class Meta:
488
  db_table = "invitation_code"
@@ -498,12 +510,14 @@ class LLMFactories(DataBaseModel):
498
  tags = CharField(
499
  max_length=255,
500
  null=False,
501
- help_text="LLM, Text Embedding, Image2Text, ASR")
 
502
  status = CharField(
503
  max_length=1,
504
  null=True,
505
  help_text="is it validate(0: wasted,1: validate)",
506
- default="1")
 
507
 
508
  def __str__(self):
509
  return self.name
@@ -523,18 +537,22 @@ class LLM(DataBaseModel):
523
  model_type = CharField(
524
  max_length=128,
525
  null=False,
526
- help_text="LLM, Text Embedding, Image2Text, ASR")
527
- fid = CharField(max_length=128, null=False, help_text="LLM factory id")
 
528
  max_tokens = IntegerField(default=0)
 
529
  tags = CharField(
530
  max_length=255,
531
  null=False,
532
- help_text="LLM, Text Embedding, Image2Text, Chat, 32k...")
 
533
  status = CharField(
534
  max_length=1,
535
  null=True,
536
  help_text="is it validate(0: wasted,1: validate)",
537
- default="1")
 
538
 
539
  def __str__(self):
540
  return self.llm_name
@@ -544,23 +562,27 @@ class LLM(DataBaseModel):
544
 
545
 
546
  class TenantLLM(DataBaseModel):
547
- tenant_id = CharField(max_length=32, null=False)
548
  llm_factory = CharField(
549
  max_length=128,
550
  null=False,
551
- help_text="LLM factory name")
 
552
  model_type = CharField(
553
  max_length=128,
554
  null=True,
555
- help_text="LLM, Text Embedding, Image2Text, ASR")
 
556
  llm_name = CharField(
557
  max_length=128,
558
  null=True,
559
  help_text="LLM name",
560
- default="")
561
- api_key = CharField(max_length=1024, null=True, help_text="API KEY")
 
562
  api_base = CharField(max_length=255, null=True, help_text="API Base")
563
- used_tokens = IntegerField(default=0)
 
564
 
565
  def __str__(self):
566
  return self.llm_name
@@ -573,7 +595,7 @@ class TenantLLM(DataBaseModel):
573
  class Knowledgebase(DataBaseModel):
574
  id = CharField(max_length=32, primary_key=True)
575
  avatar = TextField(null=True, help_text="avatar base64 string")
576
- tenant_id = CharField(max_length=32, null=False)
577
  name = CharField(
578
  max_length=128,
579
  null=False,
@@ -583,35 +605,40 @@ class Knowledgebase(DataBaseModel):
583
  max_length=32,
584
  null=True,
585
  default="Chinese" if "zh_CN" in os.getenv("LANG", "") else "English",
586
- help_text="English|Chinese")
 
587
  description = TextField(null=True, help_text="KB description")
588
  embd_id = CharField(
589
  max_length=128,
590
  null=False,
591
- help_text="default embedding model ID")
 
592
  permission = CharField(
593
  max_length=16,
594
  null=False,
595
  help_text="me|team",
596
- default="me")
597
- created_by = CharField(max_length=32, null=False)
598
- doc_num = IntegerField(default=0)
599
- token_num = IntegerField(default=0)
600
- chunk_num = IntegerField(default=0)
601
- similarity_threshold = FloatField(default=0.2)
602
- vector_similarity_weight = FloatField(default=0.3)
 
603
 
604
  parser_id = CharField(
605
  max_length=32,
606
  null=False,
607
  help_text="default parser ID",
608
- default=ParserType.NAIVE.value)
 
609
  parser_config = JSONField(null=False, default={"pages": [[1, 1000000]]})
610
  status = CharField(
611
  max_length=1,
612
  null=True,
613
  help_text="is it validate(0: wasted,1: validate)",
614
- default="1")
 
615
 
616
  def __str__(self):
617
  return self.name
@@ -627,18 +654,22 @@ class Document(DataBaseModel):
627
  parser_id = CharField(
628
  max_length=32,
629
  null=False,
630
- help_text="default parser ID")
 
631
  parser_config = JSONField(null=False, default={"pages": [[1, 1000000]]})
632
  source_type = CharField(
633
  max_length=128,
634
  null=False,
635
  default="local",
636
- help_text="where dose this document come from")
637
- type = CharField(max_length=32, null=False, help_text="file extension")
 
 
638
  created_by = CharField(
639
  max_length=32,
640
  null=False,
641
- help_text="who created it")
 
642
  name = CharField(
643
  max_length=255,
644
  null=True,
@@ -647,27 +678,31 @@ class Document(DataBaseModel):
647
  location = CharField(
648
  max_length=255,
649
  null=True,
650
- help_text="where dose it store")
651
- size = IntegerField(default=0)
652
- token_num = IntegerField(default=0)
653
- chunk_num = IntegerField(default=0)
654
- progress = FloatField(default=0)
 
655
  progress_msg = TextField(
656
  null=True,
657
  help_text="process message",
658
  default="")
659
- process_begin_at = DateTimeField(null=True)
660
  process_duation = FloatField(default=0)
 
661
  run = CharField(
662
  max_length=1,
663
  null=True,
664
  help_text="start to run processing or cancel.(1: run it; 2: cancel)",
665
- default="0")
 
666
  status = CharField(
667
  max_length=1,
668
  null=True,
669
  help_text="is it validate(0: wasted,1: validate)",
670
- default="1")
 
671
 
672
  class Meta:
673
  db_table = "document"
@@ -676,8 +711,7 @@ class Document(DataBaseModel):
676
  class File(DataBaseModel):
677
  id = CharField(
678
  max_length=32,
679
- primary_key=True,
680
- )
681
  parent_id = CharField(
682
  max_length=32,
683
  null=False,
@@ -691,7 +725,8 @@ class File(DataBaseModel):
691
  created_by = CharField(
692
  max_length=32,
693
  null=False,
694
- help_text="who created it")
 
695
  name = CharField(
696
  max_length=255,
697
  null=False,
@@ -700,14 +735,15 @@ class File(DataBaseModel):
700
  location = CharField(
701
  max_length=255,
702
  null=True,
703
- help_text="where dose it store")
704
- size = IntegerField(default=0)
705
- type = CharField(max_length=32, null=False, help_text="file extension")
 
706
  source_type = CharField(
707
  max_length=128,
708
  null=False,
709
  default="",
710
- help_text="where dose this document come from")
711
 
712
  class Meta:
713
  db_table = "file"
@@ -716,8 +752,7 @@ class File(DataBaseModel):
716
  class File2Document(DataBaseModel):
717
  id = CharField(
718
  max_length=32,
719
- primary_key=True,
720
- )
721
  file_id = CharField(
722
  max_length=32,
723
  null=True,
@@ -737,10 +772,13 @@ class Task(DataBaseModel):
737
  id = CharField(max_length=32, primary_key=True)
738
  doc_id = CharField(max_length=32, null=False, index=True)
739
  from_page = IntegerField(default=0)
 
740
  to_page = IntegerField(default=-1)
741
- begin_at = DateTimeField(null=True)
 
742
  process_duation = FloatField(default=0)
743
- progress = FloatField(default=0)
 
744
  progress_msg = TextField(
745
  null=True,
746
  help_text="process message",
@@ -749,49 +787,56 @@ class Task(DataBaseModel):
749
 
750
  class Dialog(DataBaseModel):
751
  id = CharField(max_length=32, primary_key=True)
752
- tenant_id = CharField(max_length=32, null=False)
753
  name = CharField(
754
  max_length=255,
755
  null=True,
756
- help_text="dialog application name")
 
757
  description = TextField(null=True, help_text="Dialog description")
758
  icon = TextField(null=True, help_text="icon base64 string")
759
  language = CharField(
760
  max_length=32,
761
  null=True,
762
  default="Chinese" if "zh_CN" in os.getenv("LANG", "") else "English",
763
- help_text="English|Chinese")
 
764
  llm_id = CharField(max_length=128, null=False, help_text="default llm ID")
 
765
  llm_setting = JSONField(null=False, default={"temperature": 0.1, "top_p": 0.3, "frequency_penalty": 0.7,
766
  "presence_penalty": 0.4, "max_tokens": 512})
767
  prompt_type = CharField(
768
  max_length=16,
769
  null=False,
770
  default="simple",
771
- help_text="simple|advanced")
 
772
  prompt_config = JSONField(null=False, default={"system": "", "prologue": "您好,我是您的助手小樱,长得可爱又善良,can I help you?",
773
  "parameters": [], "empty_response": "Sorry! 知识库中未找到相关内容!"})
774
 
775
  similarity_threshold = FloatField(default=0.2)
776
  vector_similarity_weight = FloatField(default=0.3)
 
777
  top_n = IntegerField(default=6)
 
778
  top_k = IntegerField(default=1024)
 
779
  do_refer = CharField(
780
  max_length=1,
781
  null=False,
782
  help_text="it needs to insert reference index into answer or not",
783
- default="1")
784
  rerank_id = CharField(
785
  max_length=128,
786
  null=False,
787
- help_text="default rerank model ID")
788
 
789
  kb_ids = JSONField(null=False, default=[])
790
  status = CharField(
791
  max_length=1,
792
  null=True,
793
  help_text="is it validate(0: wasted,1: validate)",
794
- default="1")
 
795
 
796
  class Meta:
797
  db_table = "dialog"
@@ -800,7 +845,7 @@ class Dialog(DataBaseModel):
800
  class Conversation(DataBaseModel):
801
  id = CharField(max_length=32, primary_key=True)
802
  dialog_id = CharField(max_length=32, null=False, index=True)
803
- name = CharField(max_length=255, null=True, help_text="converastion name")
804
  message = JSONField(null=True)
805
  reference = JSONField(null=True, default=[])
806
 
@@ -809,8 +854,8 @@ class Conversation(DataBaseModel):
809
 
810
 
811
  class APIToken(DataBaseModel):
812
- tenant_id = CharField(max_length=32, null=False)
813
- token = CharField(max_length=255, null=False)
814
  dialog_id = CharField(max_length=32, null=False, index=True)
815
 
816
  class Meta:
@@ -821,13 +866,14 @@ class APIToken(DataBaseModel):
821
  class API4Conversation(DataBaseModel):
822
  id = CharField(max_length=32, primary_key=True)
823
  dialog_id = CharField(max_length=32, null=False, index=True)
824
- user_id = CharField(max_length=255, null=False, help_text="user_id")
825
  message = JSONField(null=True)
826
  reference = JSONField(null=True, default=[])
827
  tokens = IntegerField(default=0)
828
- duration = FloatField(default=0)
829
- round = IntegerField(default=0)
830
- thumb_up = IntegerField(default=0)
 
831
 
832
  class Meta:
833
  db_table = "api_4_conversation"
@@ -836,10 +882,11 @@ class API4Conversation(DataBaseModel):
836
  class UserCanvas(DataBaseModel):
837
  id = CharField(max_length=32, primary_key=True)
838
  avatar = TextField(null=True, help_text="avatar base64 string")
839
- user_id = CharField(max_length=255, null=False, help_text="user_id")
840
  title = CharField(max_length=255, null=True, help_text="Canvas title")
 
841
  description = TextField(null=True, help_text="Canvas description")
842
- canvas_type = CharField(max_length=32, null=True, help_text="Canvas type")
843
  dsl = JSONField(null=True, default={})
844
 
845
  class Meta:
@@ -850,8 +897,9 @@ class CanvasTemplate(DataBaseModel):
850
  id = CharField(max_length=32, primary_key=True)
851
  avatar = TextField(null=True, help_text="avatar base64 string")
852
  title = CharField(max_length=255, null=True, help_text="Canvas title")
 
853
  description = TextField(null=True, help_text="Canvas description")
854
- canvas_type = CharField(max_length=32, null=True, help_text="Canvas type")
855
  dsl = JSONField(null=True, default={})
856
 
857
  class Meta:
@@ -859,35 +907,44 @@ class CanvasTemplate(DataBaseModel):
859
 
860
 
861
  def migrate_db():
862
- with DB.transaction():
863
- migrator = MySQLMigrator(DB)
864
- try:
865
- migrate(
866
- migrator.add_column('file', 'source_type', CharField(max_length=128, null=False, default="", help_text="where dose this document come from"))
867
- )
868
- except Exception as e:
869
- pass
870
- try:
871
- migrate(
872
- migrator.add_column('tenant', 'rerank_id', CharField(max_length=128, null=False, default="BAAI/bge-reranker-v2-m3", help_text="default rerank model ID"))
873
- )
874
- except Exception as e:
875
- pass
876
- try:
877
- migrate(
878
- migrator.add_column('dialog', 'rerank_id', CharField(max_length=128, null=False, default="", help_text="default rerank model ID"))
879
- )
880
- except Exception as e:
881
- pass
882
- try:
883
- migrate(
884
- migrator.add_column('dialog', 'top_k', IntegerField(default=1024))
885
- )
886
- except Exception as e:
887
- pass
888
- try:
889
- migrate(
890
- migrator.alter_column_type('tenant_llm', 'api_key', CharField(max_length=1024, null=True, help_text="API KEY"))
891
- )
892
- except Exception as e:
893
- pass
 
 
 
 
 
 
 
 
 
 
144
 
145
 
146
  class BaseModel(Model):
147
+ create_time = BigIntegerField(null=True, index=True)
148
+ create_date = DateTimeField(null=True, index=True)
149
+ update_time = BigIntegerField(null=True, index=True)
150
+ update_date = DateTimeField(null=True, index=True)
151
 
152
  def to_json(self):
153
  # This function is obsolete
 
234
  def insert(cls, __data=None, **insert):
235
  if isinstance(__data, dict) and __data:
236
  __data[cls._meta.combined["create_time"]
237
+ ] = utils.current_timestamp()
238
  if insert:
239
  insert["create_time"] = utils.current_timestamp()
240
 
 
248
  return {}
249
 
250
  normalized[cls._meta.combined["update_time"]
251
+ ] = utils.current_timestamp()
252
 
253
  for f_n in AUTO_DATE_TIMESTAMP_FIELD_PREFIX:
254
  if {f"{f_n}_time", f"{f_n}_date"}.issubset(cls._meta.combined.keys()) and \
 
373
 
374
  class User(DataBaseModel, UserMixin):
375
  id = CharField(max_length=32, primary_key=True)
376
+ access_token = CharField(max_length=255, null=True, index=True)
377
+ nickname = CharField(max_length=100, null=False, help_text="nicky name", index=True)
378
+ password = CharField(max_length=255, null=True, help_text="password", index=True)
379
  email = CharField(
380
  max_length=255,
381
  null=False,
 
386
  max_length=32,
387
  null=True,
388
  help_text="English|Chinese",
389
+ default="Chinese" if "zh_CN" in os.getenv("LANG", "") else "English",
390
+ index=True)
391
  color_schema = CharField(
392
  max_length=32,
393
  null=True,
394
  help_text="Bright|Dark",
395
+ default="Bright",
396
+ index=True)
397
  timezone = CharField(
398
  max_length=64,
399
  null=True,
400
  help_text="Timezone",
401
+ default="UTC+8\tAsia/Shanghai",
402
+ index=True)
403
+ last_login_time = DateTimeField(null=True, index=True)
404
+ is_authenticated = CharField(max_length=1, null=False, default="1", index=True)
405
+ is_active = CharField(max_length=1, null=False, default="1", index=True)
406
+ is_anonymous = CharField(max_length=1, null=False, default="0", index=True)
407
+ login_channel = CharField(null=True, help_text="from which user login", index=True)
408
  status = CharField(
409
  max_length=1,
410
  null=True,
411
  help_text="is it validate(0: wasted,1: validate)",
412
+ default="1",
413
+ index=True)
414
+ is_superuser = BooleanField(null=True, help_text="is root", default=False, index=True)
415
 
416
  def __str__(self):
417
  return self.email
 
426
 
427
  class Tenant(DataBaseModel):
428
  id = CharField(max_length=32, primary_key=True)
429
+ name = CharField(max_length=100, null=True, help_text="Tenant name", index=True)
430
+ public_key = CharField(max_length=255, null=True, index=True)
431
+ llm_id = CharField(max_length=128, null=False, help_text="default llm ID", index=True)
432
  embd_id = CharField(
433
  max_length=128,
434
  null=False,
435
+ help_text="default embedding model ID",
436
+ index=True)
437
  asr_id = CharField(
438
  max_length=128,
439
  null=False,
440
+ help_text="default ASR model ID",
441
+ index=True)
442
  img2txt_id = CharField(
443
  max_length=128,
444
  null=False,
445
+ help_text="default image to text model ID",
446
+ index=True)
447
  rerank_id = CharField(
448
  max_length=128,
449
  null=False,
450
+ help_text="default rerank model ID",
451
+ index=True)
452
  parser_ids = CharField(
453
  max_length=256,
454
  null=False,
455
+ help_text="document processors",
456
+ index=True)
457
+ credit = IntegerField(default=512, index=True)
458
  status = CharField(
459
  max_length=1,
460
  null=True,
461
  help_text="is it validate(0: wasted,1: validate)",
462
+ default="1",
463
+ index=True)
464
 
465
  class Meta:
466
  db_table = "tenant"
 
468
 
469
  class UserTenant(DataBaseModel):
470
  id = CharField(max_length=32, primary_key=True)
471
+ user_id = CharField(max_length=32, null=False, index=True)
472
+ tenant_id = CharField(max_length=32, null=False, index=True)
473
+ role = CharField(max_length=32, null=False, help_text="UserTenantRole", index=True)
474
+ invited_by = CharField(max_length=32, null=False, index=True)
475
  status = CharField(
476
  max_length=1,
477
  null=True,
478
  help_text="is it validate(0: wasted,1: validate)",
479
+ default="1",
480
+ index=True)
481
 
482
  class Meta:
483
  db_table = "user_tenant"
 
485
 
486
  class InvitationCode(DataBaseModel):
487
  id = CharField(max_length=32, primary_key=True)
488
+ code = CharField(max_length=32, null=False, index=True)
489
+ visit_time = DateTimeField(null=True, index=True)
490
+ user_id = CharField(max_length=32, null=True, index=True)
491
+ tenant_id = CharField(max_length=32, null=True, index=True)
492
  status = CharField(
493
  max_length=1,
494
  null=True,
495
  help_text="is it validate(0: wasted,1: validate)",
496
+ default="1",
497
+ index=True)
498
 
499
  class Meta:
500
  db_table = "invitation_code"
 
510
  tags = CharField(
511
  max_length=255,
512
  null=False,
513
+ help_text="LLM, Text Embedding, Image2Text, ASR",
514
+ index=True)
515
  status = CharField(
516
  max_length=1,
517
  null=True,
518
  help_text="is it validate(0: wasted,1: validate)",
519
+ default="1",
520
+ index=True)
521
 
522
  def __str__(self):
523
  return self.name
 
537
  model_type = CharField(
538
  max_length=128,
539
  null=False,
540
+ help_text="LLM, Text Embedding, Image2Text, ASR",
541
+ index=True)
542
+ fid = CharField(max_length=128, null=False, help_text="LLM factory id", index=True)
543
  max_tokens = IntegerField(default=0)
544
+
545
  tags = CharField(
546
  max_length=255,
547
  null=False,
548
+ help_text="LLM, Text Embedding, Image2Text, Chat, 32k...",
549
+ index=True)
550
  status = CharField(
551
  max_length=1,
552
  null=True,
553
  help_text="is it validate(0: wasted,1: validate)",
554
+ default="1",
555
+ index=True)
556
 
557
  def __str__(self):
558
  return self.llm_name
 
562
 
563
 
564
  class TenantLLM(DataBaseModel):
565
+ tenant_id = CharField(max_length=32, null=False, index=True)
566
  llm_factory = CharField(
567
  max_length=128,
568
  null=False,
569
+ help_text="LLM factory name",
570
+ index=True)
571
  model_type = CharField(
572
  max_length=128,
573
  null=True,
574
+ help_text="LLM, Text Embedding, Image2Text, ASR",
575
+ index=True)
576
  llm_name = CharField(
577
  max_length=128,
578
  null=True,
579
  help_text="LLM name",
580
+ default="",
581
+ index=True)
582
+ api_key = CharField(max_length=1024, null=True, help_text="API KEY", index=True)
583
  api_base = CharField(max_length=255, null=True, help_text="API Base")
584
+
585
+ used_tokens = IntegerField(default=0, index=True)
586
 
587
  def __str__(self):
588
  return self.llm_name
 
595
  class Knowledgebase(DataBaseModel):
596
  id = CharField(max_length=32, primary_key=True)
597
  avatar = TextField(null=True, help_text="avatar base64 string")
598
+ tenant_id = CharField(max_length=32, null=False, index=True)
599
  name = CharField(
600
  max_length=128,
601
  null=False,
 
605
  max_length=32,
606
  null=True,
607
  default="Chinese" if "zh_CN" in os.getenv("LANG", "") else "English",
608
+ help_text="English|Chinese",
609
+ index=True)
610
  description = TextField(null=True, help_text="KB description")
611
  embd_id = CharField(
612
  max_length=128,
613
  null=False,
614
+ help_text="default embedding model ID",
615
+ index=True)
616
  permission = CharField(
617
  max_length=16,
618
  null=False,
619
  help_text="me|team",
620
+ default="me",
621
+ index=True)
622
+ created_by = CharField(max_length=32, null=False, index=True)
623
+ doc_num = IntegerField(default=0, index=True)
624
+ token_num = IntegerField(default=0, index=True)
625
+ chunk_num = IntegerField(default=0, index=True)
626
+ similarity_threshold = FloatField(default=0.2, index=True)
627
+ vector_similarity_weight = FloatField(default=0.3, index=True)
628
 
629
  parser_id = CharField(
630
  max_length=32,
631
  null=False,
632
  help_text="default parser ID",
633
+ default=ParserType.NAIVE.value,
634
+ index=True)
635
  parser_config = JSONField(null=False, default={"pages": [[1, 1000000]]})
636
  status = CharField(
637
  max_length=1,
638
  null=True,
639
  help_text="is it validate(0: wasted,1: validate)",
640
+ default="1",
641
+ index=True)
642
 
643
  def __str__(self):
644
  return self.name
 
654
  parser_id = CharField(
655
  max_length=32,
656
  null=False,
657
+ help_text="default parser ID",
658
+ index=True)
659
  parser_config = JSONField(null=False, default={"pages": [[1, 1000000]]})
660
  source_type = CharField(
661
  max_length=128,
662
  null=False,
663
  default="local",
664
+ help_text="where dose this document come from",
665
+ index=True)
666
+ type = CharField(max_length=32, null=False, help_text="file extension",
667
+ index=True)
668
  created_by = CharField(
669
  max_length=32,
670
  null=False,
671
+ help_text="who created it",
672
+ index=True)
673
  name = CharField(
674
  max_length=255,
675
  null=True,
 
678
  location = CharField(
679
  max_length=255,
680
  null=True,
681
+ help_text="where dose it store",
682
+ index=True)
683
+ size = IntegerField(default=0, index=True)
684
+ token_num = IntegerField(default=0, index=True)
685
+ chunk_num = IntegerField(default=0, index=True)
686
+ progress = FloatField(default=0, index=True)
687
  progress_msg = TextField(
688
  null=True,
689
  help_text="process message",
690
  default="")
691
+ process_begin_at = DateTimeField(null=True, index=True)
692
  process_duation = FloatField(default=0)
693
+
694
  run = CharField(
695
  max_length=1,
696
  null=True,
697
  help_text="start to run processing or cancel.(1: run it; 2: cancel)",
698
+ default="0",
699
+ index=True)
700
  status = CharField(
701
  max_length=1,
702
  null=True,
703
  help_text="is it validate(0: wasted,1: validate)",
704
+ default="1",
705
+ index=True)
706
 
707
  class Meta:
708
  db_table = "document"
 
711
  class File(DataBaseModel):
712
  id = CharField(
713
  max_length=32,
714
+ primary_key=True)
 
715
  parent_id = CharField(
716
  max_length=32,
717
  null=False,
 
725
  created_by = CharField(
726
  max_length=32,
727
  null=False,
728
+ help_text="who created it",
729
+ index=True)
730
  name = CharField(
731
  max_length=255,
732
  null=False,
 
735
  location = CharField(
736
  max_length=255,
737
  null=True,
738
+ help_text="where dose it store",
739
+ index=True)
740
+ size = IntegerField(default=0, index=True)
741
+ type = CharField(max_length=32, null=False, help_text="file extension", index=True)
742
  source_type = CharField(
743
  max_length=128,
744
  null=False,
745
  default="",
746
+ help_text="where dose this document come from", index=True)
747
 
748
  class Meta:
749
  db_table = "file"
 
752
  class File2Document(DataBaseModel):
753
  id = CharField(
754
  max_length=32,
755
+ primary_key=True)
 
756
  file_id = CharField(
757
  max_length=32,
758
  null=True,
 
772
  id = CharField(max_length=32, primary_key=True)
773
  doc_id = CharField(max_length=32, null=False, index=True)
774
  from_page = IntegerField(default=0)
775
+
776
  to_page = IntegerField(default=-1)
777
+
778
+ begin_at = DateTimeField(null=True, index=True)
779
  process_duation = FloatField(default=0)
780
+
781
+ progress = FloatField(default=0, index=True)
782
  progress_msg = TextField(
783
  null=True,
784
  help_text="process message",
 
787
 
788
  class Dialog(DataBaseModel):
789
  id = CharField(max_length=32, primary_key=True)
790
+ tenant_id = CharField(max_length=32, null=False, index=True)
791
  name = CharField(
792
  max_length=255,
793
  null=True,
794
+ help_text="dialog application name",
795
+ index=True)
796
  description = TextField(null=True, help_text="Dialog description")
797
  icon = TextField(null=True, help_text="icon base64 string")
798
  language = CharField(
799
  max_length=32,
800
  null=True,
801
  default="Chinese" if "zh_CN" in os.getenv("LANG", "") else "English",
802
+ help_text="English|Chinese",
803
+ index=True)
804
  llm_id = CharField(max_length=128, null=False, help_text="default llm ID")
805
+
806
  llm_setting = JSONField(null=False, default={"temperature": 0.1, "top_p": 0.3, "frequency_penalty": 0.7,
807
  "presence_penalty": 0.4, "max_tokens": 512})
808
  prompt_type = CharField(
809
  max_length=16,
810
  null=False,
811
  default="simple",
812
+ help_text="simple|advanced",
813
+ index=True)
814
  prompt_config = JSONField(null=False, default={"system": "", "prologue": "您好,我是您的助手小樱,长得可爱又善良,can I help you?",
815
  "parameters": [], "empty_response": "Sorry! 知识库中未找到相关内容!"})
816
 
817
  similarity_threshold = FloatField(default=0.2)
818
  vector_similarity_weight = FloatField(default=0.3)
819
+
820
  top_n = IntegerField(default=6)
821
+
822
  top_k = IntegerField(default=1024)
823
+
824
  do_refer = CharField(
825
  max_length=1,
826
  null=False,
827
  help_text="it needs to insert reference index into answer or not",
 
828
  rerank_id = CharField(
829
  max_length=128,
830
  null=False,
831
+ help_text="default rerank model ID",
832
 
833
  kb_ids = JSONField(null=False, default=[])
834
  status = CharField(
835
  max_length=1,
836
  null=True,
837
  help_text="is it validate(0: wasted,1: validate)",
838
+ default="1",
839
+ index=True)
840
 
841
  class Meta:
842
  db_table = "dialog"
 
845
  class Conversation(DataBaseModel):
846
  id = CharField(max_length=32, primary_key=True)
847
  dialog_id = CharField(max_length=32, null=False, index=True)
848
+ name = CharField(max_length=255, null=True, help_text="converastion name", index=True)
849
  message = JSONField(null=True)
850
  reference = JSONField(null=True, default=[])
851
 
 
854
 
855
 
856
  class APIToken(DataBaseModel):
857
+ tenant_id = CharField(max_length=32, null=False, index=True)
858
+ token = CharField(max_length=255, null=False, index=True)
859
  dialog_id = CharField(max_length=32, null=False, index=True)
860
 
861
  class Meta:
 
866
  class API4Conversation(DataBaseModel):
867
  id = CharField(max_length=32, primary_key=True)
868
  dialog_id = CharField(max_length=32, null=False, index=True)
869
+ user_id = CharField(max_length=255, null=False, help_text="user_id", index=True)
870
  message = JSONField(null=True)
871
  reference = JSONField(null=True, default=[])
872
  tokens = IntegerField(default=0)
873
+
874
+ duration = FloatField(default=0, index=True)
875
+ round = IntegerField(default=0, index=True)
876
+ thumb_up = IntegerField(default=0, index=True)
877
 
878
  class Meta:
879
  db_table = "api_4_conversation"
 
882
  class UserCanvas(DataBaseModel):
883
  id = CharField(max_length=32, primary_key=True)
884
  avatar = TextField(null=True, help_text="avatar base64 string")
885
+ user_id = CharField(max_length=255, null=False, help_text="user_id", index=True)
886
  title = CharField(max_length=255, null=True, help_text="Canvas title")
887
+
888
  description = TextField(null=True, help_text="Canvas description")
889
+ canvas_type = CharField(max_length=32, null=True, help_text="Canvas type", index=True)
890
  dsl = JSONField(null=True, default={})
891
 
892
  class Meta:
 
897
  id = CharField(max_length=32, primary_key=True)
898
  avatar = TextField(null=True, help_text="avatar base64 string")
899
  title = CharField(max_length=255, null=True, help_text="Canvas title")
900
+
901
  description = TextField(null=True, help_text="Canvas description")
902
+ canvas_type = CharField(max_length=32, null=True, help_text="Canvas type", index=True)
903
  dsl = JSONField(null=True, default={})
904
 
905
  class Meta:
 
907
 
908
 
909
  def migrate_db():
910
+ with DB.transaction():
911
+ migrator = MySQLMigrator(DB)
912
+ try:
913
+ migrate(
914
+ migrator.add_column('file', 'source_type', CharField(max_length=128, null=False, default="",
915
+ help_text="where dose this document come from",
916
+ index=True))
917
+ )
918
+ except Exception as e:
919
+ pass
920
+ try:
921
+ migrate(
922
+ migrator.add_column('tenant', 'rerank_id',
923
+ CharField(max_length=128, null=False, default="BAAI/bge-reranker-v2-m3",
924
+ help_text="default rerank model ID"))
925
+
926
+ )
927
+ except Exception as e:
928
+ pass
929
+ try:
930
+ migrate(
931
+ migrator.add_column('dialog', 'rerank_id', CharField(max_length=128, null=False, default="",
932
+ help_text="default rerank model ID"))
933
+
934
+ )
935
+ except Exception as e:
936
+ pass
937
+ try:
938
+ migrate(
939
+ migrator.add_column('dialog', 'top_k', IntegerField(default=1024))
940
+
941
+ )
942
+ except Exception as e:
943
+ pass
944
+ try:
945
+ migrate(
946
+ migrator.alter_column_type('tenant_llm', 'api_key',
947
+ CharField(max_length=1024, null=True, help_text="API KEY", index=True))
948
+ )
949
+ except Exception as e:
950
+ pass