35 lines
1.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ns = params_kw.copy()
db = DBPools()
dbname = get_module_dbname('rag')
async with db.sqlorContext(dbname) as sor:
env = request._run_ns
userorgid = await env.get_userorgid()
kb_id = uuid()
name = ns.get("name", "")
desc = ns.get("description", "")
# 向量引擎bge-m3=文本(在线) / qwen3-vl-embedding=多媒体(在线) / clip-vith14=多媒体(GPU本地CLIP)
emb_type = ns.get("embedding_type", "") or ns.get("embedding_engine", "")
if emb_type not in ("bge-m3", "clip-vith14", "qwen3-vl-embedding"):
emb_type = "bge-m3"
# 知识库级角色权限:维护角色/检索角色(多选 checkbox 提交 list兼容逗号串
def _roles_csv(v):
if isinstance(v, (list, tuple)):
return ','.join([str(x) for x in v if str(x).strip()])
return str(v or '')
maintain_roles = _roles_csv(ns.get("maintain_roles", ""))
search_roles = _roles_csv(ns.get("search_roles", ""))
await sor.sqlExe(
"INSERT INTO rag_knowledge_bases (id, name, description, org_id, embedding_engine, vdb_collection, doc_count, total_size, chunk_count, status, maintain_roles, search_roles, created_at) "
"VALUES (${id}$, ${name}$, ${desc}$, ${org_id}$, ${emb}$, 'rag_collection', 0, 0, 0, 'active', ${mr}$, ${sr}$, NOW())",
{"id": kb_id, "name": name, "desc": desc, "org_id": userorgid, "emb": emb_type,
"mr": maintain_roles, "sr": search_roles})
# 机构 rags 目录下建知识库子目录:{workspace_base}/{org}/rags/{kb}/
from rag.init import get_rags_base, ensure_kb_dir
rags_base = await get_rags_base(sor)
ensure_kb_dir(rags_base, userorgid, kb_id)
return {
"widgettype": "urlwidget",
"options": {"url": entire_url('/rag/knowledge_bases_list/index.ui')}
}
return {"error": "failed"}