From 50b2e35e7bb06179d1b5b852f4069c93ba7391ec Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 27 Jul 2026 12:10:28 +0800 Subject: [PATCH] feat: replace hardcoded VDB/Graph calls with uapi-based async functions - Add _call_uapi() for unified GPU service calling via uapi config - Add _call_vdb_async() / _call_graph_async() async wrappers - Update doc_delete_handler to use async versions - Keep sync wrappers for backward compat --- rag/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 125 bytes rag/__pycache__/fileprocess.cpython-310.pyc | Bin 0 -> 7967 bytes rag/__pycache__/folderinfo.cpython-310.pyc | Bin 0 -> 8904 bytes rag/__pycache__/init.cpython-310.pyc | Bin 0 -> 1616 bytes .../rag_operations.cpython-310.pyc | Bin 0 -> 22278 bytes rag/__pycache__/ragapi.cpython-310.pyc | Bin 0 -> 10520 bytes rag/__pycache__/ragllm_utils.cpython-310.pyc | Bin 0 -> 791 bytes rag/__pycache__/ragprogram.cpython-310.pyc | Bin 0 -> 1433 bytes rag/__pycache__/service_opts.cpython-310.pyc | Bin 0 -> 3302 bytes .../transaction_manager.cpython-310.pyc | Bin 0 -> 6171 bytes rag/__pycache__/uapi_service.cpython-310.pyc | Bin 0 -> 17237 bytes rag/init.py | 53 ++++++++++++++++-- 12 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 rag/__pycache__/__init__.cpython-310.pyc create mode 100644 rag/__pycache__/fileprocess.cpython-310.pyc create mode 100644 rag/__pycache__/folderinfo.cpython-310.pyc create mode 100644 rag/__pycache__/init.cpython-310.pyc create mode 100644 rag/__pycache__/rag_operations.cpython-310.pyc create mode 100644 rag/__pycache__/ragapi.cpython-310.pyc create mode 100644 rag/__pycache__/ragllm_utils.cpython-310.pyc create mode 100644 rag/__pycache__/ragprogram.cpython-310.pyc create mode 100644 rag/__pycache__/service_opts.cpython-310.pyc create mode 100644 rag/__pycache__/transaction_manager.cpython-310.pyc create mode 100644 rag/__pycache__/uapi_service.cpython-310.pyc diff --git a/rag/__pycache__/__init__.cpython-310.pyc b/rag/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a26b80669605f9b87bbacd009a9cd1670d038020 GIT binary patch literal 125 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 Mx{BUgHRH$s3p?oeN&o-= literal 0 HcmV?d00001 diff --git a/rag/__pycache__/folderinfo.cpython-310.pyc b/rag/__pycache__/folderinfo.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30c79df2c0c5d523b1b29a1df4c62b250aa25e64 GIT binary patch literal 8904 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 literal 0 HcmV?d00001 diff --git a/rag/__pycache__/rag_operations.cpython-310.pyc b/rag/__pycache__/rag_operations.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..89ccb0f5d2c65c1d59a9892360d3d515bc24d962 GIT binary patch literal 22278 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 literal 0 HcmV?d00001 diff --git a/rag/__pycache__/ragapi.cpython-310.pyc b/rag/__pycache__/ragapi.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0dca83d61aa8557ad018fdc1b404edacc2610d97 GIT binary patch literal 10520 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 Tp)Tofq`wJm3_TobiZ=fbxus9h literal 0 HcmV?d00001 diff --git a/rag/__pycache__/ragllm_utils.cpython-310.pyc b/rag/__pycache__/ragllm_utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c81d2f068c1b61fa4fea554f31dca067de733d73 GIT binary patch literal 791 zcmYjPOK;Oa5Z;F$iQ7~{LVFC#9x35vrZbiqZ#{~_s)*&^#TNEKixe$A_)Dm;Q9d_dJL>@gJ6hZ zfiirGF=B+#ujrI8=LALWZ?K{W8~@pp*HQ{S##XUDTk!1y{{+_GL43wFUO=uTZb(gZ zz{nR|qchylnl8u^y@X0HP~!li8{`6V7=;+GbT3ik*Z#t*y(NCI_WyRL=`g41)}4i4 zcbQweDPEFwuAmOyAOd+Epi8>aVswHI*U|db3~puVE${>^k#}rJ$}ajj=PXQ$LZn=W z30K_gwM+zTr_g__&E|20=H;S$MC~Tn0VHYzC3(Zcx-QbizyH$EwQXT$>J{*qTl6>aPtm zH!RE~s|1hPC{Hr3?7Nz6JrznK`}Rd z+vaM5Iv&mAbx{f#^j#3-Q-B>HkL=(b9AFRM1k|Sl-~a1)Y8PCNBWil>tq$0zu$$Q4 bw6(RZToZPqP3PfiE|2WOY6rwN+9v-1x|-IU literal 0 HcmV?d00001 diff --git a/rag/__pycache__/ragprogram.cpython-310.pyc b/rag/__pycache__/ragprogram.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47e68cdf3a14b0b542ef7e5ccbbd60602b9b286d GIT binary patch literal 1433 zcmaJ>&5s*36t_K|uVg0LmK97_n6I`r+Dl#mw8Xo*kk@N ziu;#^1&MHLshCTyym zZT4g-G_JJ;=W4Q$+Eyh?mK~TT1?X8K)#67a-T?UDULUd1GGB}YuSz+BU)_$)S;K0n z`x0uj(H(G-w?UAv9US0&Jirvc1T&*iLNS3(vGe=B>k(K3i?OXO`@fLE@K^B`xX(;Y zw#_8->gHsiY;F$TxjCf4aC6Ac&3Uo48tcMhR*JUVZfQgBBk~+OkI@wiN4qSX8y3Rx?0wmYSB!YoEKtE`vPQdRfrX_n50D$V(qD$V2$VZx4fLpH6<%hUy_ uuO}z#r)hZgLUkPNlHK9&gl7T~U5wtH_1$~lltTs}_D}$o3~-MGul)tQ=U_1a literal 0 HcmV?d00001 diff --git a/rag/__pycache__/service_opts.cpython-310.pyc b/rag/__pycache__/service_opts.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..01d0a384f8668bede68feb3d0b7237ba58a82357 GIT binary patch literal 3302 zcmb7G&2tpT74M#zo&8>fz}O*NAF0vAV%E6IH%19}ca)g6Yaam=TYNZ}F1G_t` zo*5bB*(zZ{FpdTO2rh>YTbn=?PNf6~r-G404!-9P=&N^E(uun-$$LFBs}(p^$xL-m z_piU+>-T=|jh)S=2s|%ZeW!kwCFC3IbU!L|eh$U?EmVv!S|$}bK`FMCvQkkeRM}R` zS|v6StLPJYB|Z@cOk=V0WFo$v#KZUX$9AXPY%9uC|^TymM9_T zD5G`7CriXvnBr55Hk47q)MKQs`l_?nrA+hbb;4pd)df^Y9VfoZ^gdG8TxEgOV=O*Q z-ptl@U-JRw1Ac5t4cZNuKl6ega|U6T1nzQEiT02x5oU~1R9O`ALxDL_O`NSr15;@iT1aX@#GGes3S~Q*75DnJEFf z8_naezyCL{1lk|dG8e1%4jcr)m~gSY+kaM(OkLQzIqS(tp^`(T>eMv z$|vm`i>>z>tt;;UZv3#ha>4Lw#ahi``A4hox6WPMSbk`r%UILqq+N3zW213rCsXQzm0pwKQq51I8?yl3#A}V)eAi zWyj@Kt!z57T?!|dRo8MY2^y*7FHRi))%K%P$=8mJoEQmp88Y_2Ew!rePbEc6Hpjdk z(7Ao%ukA|@TkqZrW)4ZvSig2YPEXc+K!Jt8)kep_ zJ{FtAy`+WWVaMAAVsuQjbx+>YfTNX+?i~YTft`{aI|&txBodK@L_9Q)P{B4L5gA5k zD6W@=U8hQBXZ{q9LA;hL ze>{6=^WtLr@<)6R!Z=pp=9F1(-oMnku&};zzWv@BP>G`g-cG2hrhWKS>-xj>&u?$s z{XKAvKNAf(m14QvTK=rL_HnqX4~MXtE?c$Mt!wQ&jrRPxK-%DTw)qYEj0Q#e%|2*I zze&BJ)G-_@jCh1YI1YR$Psai$Quz*;D(GoJXSe)_qp%$B;3yR7ANz=BK)Yj~=F08n z{XYb9fNcVEykz8KLU(4$BWFw=gXuzbOjoEy#zf3=&5D!H0c3NIDMKV+rVJh;jUi-` zn~qm@g@zrGj=a`lj!;jVXF2+Z$l#jDuf&e16|K!hs{-E@@vzVL;^Ll) z2G;hccOR`@6FV_%RBYyz%}F+e{1Pg#H6P>XmK+t}7-gjSY<|?Py5<>IYWjs1ID-Nl z)q}PC2RI*tTu`Amiryz9(6*@Ovk5{+-uAn4nO?j0s zL*xJcUD3yhs{}tRr{JpLV&dLUVWVyNG{~VLSMM}ht5@Kb28Pxj+--kyv3=ujkV6j+ zbvQluLCS!qlOzjplcpiDCzG9H%Yk1Whd|m1eR%gKbdBRm26ls#NIbDtpc|QUD44{6%^2d$^T{c%f-B`ZWy#K%$c(nR%mzI};Y^rh0 zGtv!&YE^;aC~sa13@u}U3cMB?x8HIeH++YaTUz1jU&D?L`iSJD9&j>8`AY!(clMlw z(QfttUw|``FAyXj;|u(+{?B|l@C0AfFya%m@X-$ypocMK`;bR{s{iRNC7hhNtjR)!?{Ez_aB%=!4v=h literal 0 HcmV?d00001 diff --git a/rag/__pycache__/transaction_manager.cpython-310.pyc b/rag/__pycache__/transaction_manager.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0a6cca6ecbce0645f309f58aa7a967e5ed33e2f GIT binary patch literal 6171 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 O#$xkW78}U=(tr&B literal 0 HcmV?d00001 diff --git a/rag/init.py b/rag/init.py index c6f5a76..a3025ee 100644 --- a/rag/init.py +++ b/rag/init.py @@ -196,7 +196,7 @@ async def doc_delete_handler(request, params_kw, *args, **kwargs): vector_ids = [c.vector_id for c in chunks if c.vector_id] if vector_ids: try: - _call_vdb("/v1/delete", {"colname": doc.kb_id, "ids": vector_ids}) + await _call_vdb_async("/v1/delete", {"colname": doc.kb_id, "ids": vector_ids}) except Exception as e: exception(f"vdb delete failed: {e}") @@ -204,7 +204,7 @@ async def doc_delete_handler(request, params_kw, *args, **kwargs): entities = await sor.R("entities", {"kb_id": doc.kb_id}) if entities: try: - _call_graph("/api/graph/save", {"graph": doc.kb_id}) + await _call_graph_async("/api/graph/save", {"graph": doc.kb_id}) except Exception as e: exception(f"graph cleanup failed: {e}") @@ -250,8 +250,53 @@ def _detect_file_type(name, mime): return "other" +async def _call_uapi(upappid, apiname, data, timeout=10): + """Call GPU service via uapi config in rag database""" + import aiohttp + env = ServerEnv() + async with get_sor_context(env, 'rag') as sor: + recs = await sor.sqlExe( + "SELECT a.path, a.httpmethod, a.data as tmpl, b.baseurl " + "FROM uapi a JOIN upapp b ON a.upappid=b.id " + "WHERE a.upappid=${upappid}$ AND a.name=${apiname}$", + {"upappid": upappid, "apiname": apiname}) + if not recs: + raise Exception(f"uapi not found: {upappid}/{apiname}") + cfg = recs[0] + body = await _render_tmpl(cfg.tmpl, data) + url = f"{cfg.baseurl}{cfg.path}" + async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=timeout)) as session: + async with session.post(url, data=body, headers={"Content-Type": "application/json"}) as resp: + return await resp.json() + + +async def _render_tmpl(tmpl, data): + """Simple Jinja2-style template rendering for uapi data templates""" + import re + result = tmpl + for key, val in data.items(): + result = result.replace("{{" + key + "}}", str(val)) + result = result.replace("{{json.dumps(" + key + ")}}", json.dumps(val, ensure_ascii=False)) + return result + + +async def _call_vdb_async(path, data, timeout=10): + """Call VDB service via uapi (mapping path to apiname)""" + apiname_map = {"/v1/upsert": "upsert", "/v1/search": "search", "/v1/delete": "delete"} + apiname = apiname_map.get(path, "search") + return await _call_uapi("rag-vdb", apiname, data, timeout) + + +async def _call_graph_async(path, data, timeout=10): + """Call Graph service via uapi""" + apiname_map = {"/api/graph/save": "save", "/api/graph/query": "query", "/api/graph/delete": "delete"} + apiname = apiname_map.get(path, "save") + return await _call_uapi("rag-graph", apiname, data, timeout) + + +# Keep sync wrappers for backward compat (note: these block in async context, prefer async versions) def _call_vdb(path, data, timeout=10): - """Call VDB service""" + """Synchronous VDB call — deprecated, use _call_vdb_async in async context""" import urllib.request url = f"http://localhost:8886{path}" req = urllib.request.Request(url, data=json.dumps(data).encode(), @@ -261,7 +306,7 @@ def _call_vdb(path, data, timeout=10): def _call_graph(path, data, timeout=10): - """Call Graph service""" + """Synchronous Graph call — deprecated, use _call_graph_async in async context""" import urllib.request url = f"http://localhost:9092{path}" req = urllib.request.Request(url, data=json.dumps(data).encode(),