【Dify】 vanna.ai 配置还原,暂时不用ollama

pull/22121/head
liuchangsheng@wisdomidata.com 11 months ago
parent 178042c1f8
commit 753d08b93f

@ -71,10 +71,14 @@ class VannaServer:
embedding_host = config["embedding_host"] if "embedding_host" in config else 'http://wsd.wisdomidata.com:19042' embedding_host = config["embedding_host"] if "embedding_host" in config else 'http://wsd.wisdomidata.com:19042'
embedding_model = config["embedding_model"] if "embedding_model" in config else "bge-m3" # BAAI/bge-m3 embedding_model = config["embedding_model"] if "embedding_model" in config else "bge-m3" # BAAI/bge-m3
embedding_function = CustomEmbeddingFunction({ embedding_function = model.dense.SentenceTransformerEmbeddingFunction(
"host": embedding_host, model_name=embedding_model,
"embed_model": embedding_model device='cpu' # 'cpu' or 'cuda:0'
}) )
# embedding_function = CustomEmbeddingFunction({
# "host": embedding_host,
# "embed_model": embedding_model
# })
chat_llm = Ollama chat_llm = Ollama
if llm_type == "ollama": if llm_type == "ollama":
config = { config = {
@ -120,94 +124,94 @@ class VannaServer:
# 更新建表DDL语句 # 更新建表DDL语句
def refresh_create_table_ddl_train(self): def refresh_create_table_ddl_train(self):
sql = """ sql = """
SELECT SELECT
'CREATE TABLE ' 'CREATE TABLE '
|| C.TABLE_NAME || C.TABLE_NAME
|| ' (' || ' ('
|| C.COLUMN_NAMES || C.COLUMN_NAMES
|| ');' || ');'
|| C.COMMENT_COLUMNS || C.COMMENT_COLUMNS
|| CASE WHEN FK.FOREIGN_KEY_COLUMNS IS NOT NULL THEN FK.FOREIGN_KEY_COLUMNS ELSE '' END || CASE WHEN FK.FOREIGN_KEY_COLUMNS IS NOT NULL THEN FK.FOREIGN_KEY_COLUMNS ELSE '' END
|| CASE WHEN FK.FOREIGN_KEY_DESC IS NOT NULL THEN FK.FOREIGN_KEY_DESC ELSE '' END || CASE WHEN FK.FOREIGN_KEY_DESC IS NOT NULL THEN FK.FOREIGN_KEY_DESC ELSE '' END
|| 'COMMENT ON TABLE ' || 'COMMENT ON TABLE '
|| C.TABLE_NAME || C.TABLE_NAME
|| ' IS ''' || ' IS '''
|| G.DESCRIPTION || G.DESCRIPTION
|| ''';' || ''';'
AS DDL, AS DDL,
C.TABLE_NAME C.TABLE_NAME
FROM ( FROM (
SELECT SELECT
COL.TABLE_NAME, COL.TABLE_NAME,
COL.TABLE_SCHEMA, COL.TABLE_SCHEMA,
STRING_AGG( STRING_AGG(
COL.COLUMN_NAME COL.COLUMN_NAME
|| ' ' || ' '
|| COL.DATA_TYPE || COL.DATA_TYPE
|| COALESCE('(' || COL.CHARACTER_MAXIMUM_LENGTH || ')', '') || COALESCE('(' || COL.CHARACTER_MAXIMUM_LENGTH || ')', '')
|| COALESCE(' DEFAULT ' || COL.COLUMN_DEFAULT, '') || COALESCE(' DEFAULT ' || COL.COLUMN_DEFAULT, '')
|| CASE || CASE
WHEN COL.IS_NULLABLE = 'NO' THEN ' NOT NULL' WHEN COL.IS_NULLABLE = 'NO' THEN ' NOT NULL'
ELSE '' ELSE ''
END, END,
',' ','
) AS COLUMN_NAMES, ) AS COLUMN_NAMES,
STRING_AGG( STRING_AGG(
'COMMENT ON COLUMN ' 'COMMENT ON COLUMN '
|| COL.TABLE_NAME || COL.TABLE_NAME
|| '.' || '.'
|| COL.COLUMN_NAME || COL.COLUMN_NAME
|| ' IS ''' || ' IS '''
|| PGD.DESCRIPTION || PGD.DESCRIPTION
|| ''';', || ''';',
'' ''
) AS COMMENT_COLUMNS ) AS COMMENT_COLUMNS
FROM FROM
PG_CATALOG.PG_STATIO_ALL_TABLES AS ST PG_CATALOG.PG_STATIO_ALL_TABLES AS ST
INNER JOIN INNER JOIN
PG_CATALOG.PG_DESCRIPTION AS PGD PG_CATALOG.PG_DESCRIPTION AS PGD
ON PGD.OBJOID = ST.RELID ON PGD.OBJOID = ST.RELID
INNER JOIN INNER JOIN
INFORMATION_SCHEMA.COLUMNS AS COL INFORMATION_SCHEMA.COLUMNS AS COL
ON ( ON (
COL.TABLE_SCHEMA = ST.SCHEMANAME COL.TABLE_SCHEMA = ST.SCHEMANAME
AND COL.TABLE_NAME = ST.RELNAME AND COL.TABLE_NAME = ST.RELNAME
AND COL.ORDINAL_POSITION = PGD.OBJSUBID AND COL.ORDINAL_POSITION = PGD.OBJSUBID
) )
WHERE WHERE
COL.TABLE_SCHEMA = 'public' COL.TABLE_SCHEMA = 'public'
GROUP BY GROUP BY
COL.TABLE_SCHEMA, COL.TABLE_SCHEMA,
COL.TABLE_NAME COL.TABLE_NAME
) C ) C
LEFT JOIN ( LEFT JOIN (
SELECT SELECT
N.NSPNAME AS SCHEMA_NAME, N.NSPNAME AS SCHEMA_NAME,
C.RELNAME AS TABLE_NAME, C.RELNAME AS TABLE_NAME,
D.DESCRIPTION D.DESCRIPTION
FROM FROM
PG_CATALOG.PG_DESCRIPTION D PG_CATALOG.PG_DESCRIPTION D
JOIN JOIN
PG_CATALOG.PG_CLASS C PG_CATALOG.PG_CLASS C
ON C.OID = D.OBJOID ON C.OID = D.OBJOID
JOIN JOIN
PG_CATALOG.PG_NAMESPACE N PG_CATALOG.PG_NAMESPACE N
ON N.OID = C.RELNAMESPACE ON N.OID = C.RELNAMESPACE
WHERE WHERE
C.RELKIND = 'r' C.RELKIND = 'r'
AND D.OBJSUBID = 0 AND D.OBJSUBID = 0
) G ) G
ON G.SCHEMA_NAME = C.TABLE_SCHEMA ON G.SCHEMA_NAME = C.TABLE_SCHEMA
AND G.TABLE_NAME = C.TABLE_NAME AND G.TABLE_NAME = C.TABLE_NAME
LEFT JOIN ( LEFT JOIN (
SELECT rel_src.relname AS source_table, SELECT rel_src.relname AS source_table,
STRING_AGG( STRING_AGG(
'ALTER TABLE ' 'ALTER TABLE '
|| rel_src.relname || rel_src.relname
|| ' ADD CONSTRAINT ' || ' ADD CONSTRAINT '
|| con.conname || con.conname
|| ' FOREIGN KEY (' || ' FOREIGN KEY ('
|| att_src.attname || att_src.attname
|| ') REFERENCES ' || ') REFERENCES '
|| rel_tgt.relname || rel_tgt.relname
|| '(' || '('
@ -217,11 +221,11 @@ LEFT JOIN (
'' ''
) AS FOREIGN_KEY_COLUMNS, ) AS FOREIGN_KEY_COLUMNS,
STRING_AGG( STRING_AGG(
'COMMENT ON CONSTRAINT ' 'COMMENT ON CONSTRAINT '
|| con.conname || con.conname
|| ' ON ' || ' ON '
|| rel_src.relname || rel_src.relname
|| ' IS ''' || ' IS '''
|| d.description || d.description
|| ''';', || ''';',
'' ''
@ -379,19 +383,19 @@ WHERE C.TABLE_NAME NOT IN ('flyway_table_dict','flyway_schema_history')
limit=10000, limit=10000,
) )
data_texts = {t["question"]: t for t in data_list} data_texts = {t["question"]: t for t in data_list}
if bool(exist_doc_data): if bool(exist_doc_data):
remove_ids = [item["id"] for item in exist_doc_data if item['text'] in data_texts ] remove_ids = [item["id"] for item in exist_doc_data if item['text'] in data_texts ]
if bool(remove_ids): if bool(remove_ids):
self.vn.milvus_client.delete(collection_name="vannasql", ids=remove_ids) self.vn.milvus_client.delete(collection_name="vannasql", ids=remove_ids)
for item in data_list: for item in data_list:
self.vn.train( self.vn.train(
question=item["question"], question=item["question"],
sql=item["sql"], sql=item["sql"],
) )
self.vn.milvus_client.refresh_load(collection_name="vannasql") self.vn.milvus_client.refresh_load(collection_name="vannasql")
return False return False

Loading…
Cancel
Save