Skip to content

Commit 56c0359

Browse files
committed
feat: Vector retrieval matches tables
1 parent 7328b1b commit 56c0359

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

backend/apps/datasource/crud/datasource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from apps.db.engine import get_engine_config, get_engine_conn
1616
from common.core.config import settings
1717
from common.core.deps import SessionDep, CurrentUser, Trans
18-
from common.utils.embedding_threads import run_save_table_embeddings
18+
from apps.datasource.crud.table import run_save_table_embeddings
1919
from common.utils.utils import deepcopy_ignore_extra
2020
from .table import get_tables_by_ds_id
2121
from ..crud.field import delete_field_by_ds_id, update_field

backend/apps/datasource/crud/table.py

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import json
22
import time
33
import traceback
4+
from concurrent.futures import ThreadPoolExecutor
45
from typing import List
56

67
from sqlalchemy import and_, select, update
8+
from sqlalchemy.orm import sessionmaker
79
from sqlalchemy.orm.session import Session
810

911
from apps.ai_model.embedding import EmbeddingModelCache
@@ -12,6 +14,13 @@
1214
from common.utils.utils import SQLBotLogUtil
1315
from ..models.datasource import CoreTable, CoreField
1416

17+
executor = ThreadPoolExecutor(max_workers=200)
18+
19+
from common.core.db import engine
20+
21+
session_maker = sessionmaker(bind=engine)
22+
session = session_maker()
23+
1524

1625
def delete_table_by_ds_id(session: SessionDep, id: int):
1726
session.query(CoreTable).filter(CoreTable.ds_id == id).delete(synchronize_session=False)
@@ -32,14 +41,18 @@ def update_table(session: SessionDep, item: CoreTable):
3241

3342

3443
def run_fill_empty_table_embedding(session: Session):
35-
if not settings.EMBEDDING_ENABLED:
36-
return
44+
try:
45+
if not settings.EMBEDDING_ENABLED:
46+
return
3747

38-
SQLBotLogUtil.info('get tables')
39-
stmt = select(CoreTable.id).where(and_(CoreTable.embedding.is_(None)))
40-
results = session.execute(stmt).scalars().all()
48+
SQLBotLogUtil.info('get tables')
49+
stmt = select(CoreTable.id).where(and_(CoreTable.embedding.is_(None)))
50+
results = session.execute(stmt).scalars().all()
51+
SQLBotLogUtil.info('result:' + str(len(results)))
4152

42-
save_table_embedding(session, results)
53+
save_table_embedding(session, results)
54+
except Exception:
55+
traceback.print_exc()
4356

4457

4558
def save_table_embedding(session: Session, ids: List[int]):
@@ -89,3 +102,14 @@ def save_table_embedding(session: Session, ids: List[int]):
89102
SQLBotLogUtil.info('table embedding finished in:' + str(end_time - start_time) + 'seconds')
90103
except Exception:
91104
traceback.print_exc()
105+
106+
107+
def run_save_table_embeddings(ids: List[int]):
108+
executor.submit(save_table_embedding, session, ids)
109+
110+
111+
def fill_empty_table_embeddings():
112+
try:
113+
executor.submit(run_fill_empty_table_embedding, session)
114+
except Exception:
115+
traceback.print_exc()

backend/common/utils/embedding_threads.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,3 @@ def run_save_data_training_embeddings(ids: List[int]):
3131
def fill_empty_data_training_embeddings():
3232
from apps.data_training.curd.data_training import run_fill_empty_embeddings
3333
executor.submit(run_fill_empty_embeddings, session)
34-
35-
36-
def run_save_table_embeddings(ids: List[int]):
37-
from apps.datasource.crud.table import save_table_embedding
38-
executor.submit(save_table_embedding, session, ids)
39-
40-
41-
def fill_empty_table_embeddings():
42-
from apps.datasource.crud.table import run_fill_empty_table_embedding
43-
executor.submit(run_fill_empty_table_embedding, session)

backend/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212

1313
from alembic import command
1414
from apps.api import api_router
15+
from apps.datasource.crud.table import fill_empty_table_embeddings
1516
from apps.system.crud.aimodel_manage import async_model_info
1617
from apps.system.crud.assistant import init_dynamic_cors
1718
from apps.system.middleware.auth import TokenMiddleware
1819
from common.core.config import settings
1920
from common.core.response_middleware import ResponseMiddleware, exception_handler
2021
from common.core.sqlbot_cache import init_sqlbot_cache
21-
from common.utils.embedding_threads import fill_empty_terminology_embeddings, fill_empty_data_training_embeddings, \
22-
fill_empty_table_embeddings
22+
from common.utils.embedding_threads import fill_empty_terminology_embeddings, fill_empty_data_training_embeddings
2323
from common.utils.utils import SQLBotLogUtil
2424

2525

0 commit comments

Comments
 (0)