remove chunk_rerank_top_k
This commit is contained in:
parent
86a0a4872e
commit
7c882313bb
106 changed files with 3568 additions and 3654 deletions
12
README-zh.md
12
README-zh.md
|
|
@ -295,15 +295,10 @@ class QueryParam:
|
|||
"""Number of top items to retrieve. Represents entities in 'local' mode and relationships in 'global' mode."""
|
||||
|
||||
chunk_top_k: int = int(os.getenv("CHUNK_TOP_K", "5"))
|
||||
"""Number of text chunks to retrieve initially from vector search.
|
||||
"""Number of text chunks to retrieve initially from vector search and keep after reranking.
|
||||
If None, defaults to top_k value.
|
||||
"""
|
||||
|
||||
chunk_rerank_top_k: int = int(os.getenv("CHUNK_RERANK_TOP_K", "5"))
|
||||
"""Number of text chunks to keep after reranking.
|
||||
If None, keeps all chunks returned from initial retrieval.
|
||||
"""
|
||||
|
||||
max_entity_tokens: int = int(os.getenv("MAX_ENTITY_TOKENS", "10000"))
|
||||
"""Maximum number of tokens allocated for entity context in unified token control system."""
|
||||
|
||||
|
|
@ -340,6 +335,11 @@ class QueryParam:
|
|||
"""User-provided prompt for the query.
|
||||
If proivded, this will be use instead of the default vaulue from prompt template.
|
||||
"""
|
||||
|
||||
enable_rerank: bool = True
|
||||
"""Enable reranking for retrieved text chunks. If True but no rerank model is configured, a warning will be issued.
|
||||
Default is True to enable reranking when rerank model is available.
|
||||
"""
|
||||
```
|
||||
|
||||
> top_k的默认值可以通过环境变量TOP_K更改。
|
||||
|
|
|
|||
12
README.md
12
README.md
|
|
@ -302,15 +302,10 @@ class QueryParam:
|
|||
"""Number of top items to retrieve. Represents entities in 'local' mode and relationships in 'global' mode."""
|
||||
|
||||
chunk_top_k: int = int(os.getenv("CHUNK_TOP_K", "5"))
|
||||
"""Number of text chunks to retrieve initially from vector search.
|
||||
"""Number of text chunks to retrieve initially from vector search and keep after reranking.
|
||||
If None, defaults to top_k value.
|
||||
"""
|
||||
|
||||
chunk_rerank_top_k: int = int(os.getenv("CHUNK_RERANK_TOP_K", "5"))
|
||||
"""Number of text chunks to keep after reranking.
|
||||
If None, keeps all chunks returned from initial retrieval.
|
||||
"""
|
||||
|
||||
max_entity_tokens: int = int(os.getenv("MAX_ENTITY_TOKENS", "10000"))
|
||||
"""Maximum number of tokens allocated for entity context in unified token control system."""
|
||||
|
||||
|
|
@ -341,6 +336,11 @@ class QueryParam:
|
|||
"""User-provided prompt for the query.
|
||||
If proivded, this will be use instead of the default vaulue from prompt template.
|
||||
"""
|
||||
|
||||
enable_rerank: bool = True
|
||||
"""Enable reranking for retrieved text chunks. If True but no rerank model is configured, a warning will be issued.
|
||||
Default is True to enable reranking when rerank model is available.
|
||||
"""
|
||||
```
|
||||
|
||||
> default value of Top_k can be change by environment variables TOP_K.
|
||||
|
|
|
|||
|
|
@ -58,14 +58,13 @@ OLLAMA_EMULATING_MODEL_TAG=latest
|
|||
# COSINE_THRESHOLD=0.2
|
||||
### Number of entities or relations to retrieve from KG
|
||||
# TOP_K=60
|
||||
### Number of text chunks to retrieve initially from vector search
|
||||
### Number of text chunks to retrieve initially from vector search and keep after reranking
|
||||
# CHUNK_TOP_K=5
|
||||
|
||||
### Rerank Configuration
|
||||
# ENABLE_RERANK=False
|
||||
### Number of text chunks to keep after reranking (should be <= CHUNK_TOP_K)
|
||||
# CHUNK_RERANK_TOP_K=5
|
||||
### Rerank model configuration (required when ENABLE_RERANK=True)
|
||||
### Note: Reranking is now controlled per query via the 'enable_rerank' parameter (default: true)
|
||||
### The following configuration is only needed when you want to use reranking
|
||||
### Rerank model configuration (required when enable_rerank=true in query parameters)
|
||||
# RERANK_MODEL=BAAI/bge-reranker-v2-m3
|
||||
# RERANK_BINDING_HOST=https://api.your-rerank-provider.com/v1/rerank
|
||||
# RERANK_BINDING_API_KEY=your_rerank_api_key_here
|
||||
|
|
|
|||
|
|
@ -168,20 +168,8 @@ def parse_args() -> argparse.Namespace:
|
|||
parser.add_argument(
|
||||
"--chunk-top-k",
|
||||
type=int,
|
||||
default=get_env_value("CHUNK_TOP_K", 15, int),
|
||||
help="Number of text chunks to retrieve initially from vector search (default: from env or 15)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--chunk-rerank-top-k",
|
||||
type=int,
|
||||
default=get_env_value("CHUNK_RERANK_TOP_K", 5, int),
|
||||
help="Number of text chunks to keep after reranking (default: from env or 5)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--enable-rerank",
|
||||
action="store_true",
|
||||
default=get_env_value("ENABLE_RERANK", False, bool),
|
||||
help="Enable rerank functionality (default: from env or False)",
|
||||
default=get_env_value("CHUNK_TOP_K", 5, int),
|
||||
help="Number of text chunks to retrieve initially from vector search and keep after reranking (default: from env or 5)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--cosine-threshold",
|
||||
|
|
|
|||
|
|
@ -292,9 +292,9 @@ def create_app(args):
|
|||
),
|
||||
)
|
||||
|
||||
# Configure rerank function if enabled
|
||||
# Configure rerank function if model and API are configured
|
||||
rerank_model_func = None
|
||||
if args.enable_rerank and args.rerank_binding_api_key and args.rerank_binding_host:
|
||||
if args.rerank_binding_api_key and args.rerank_binding_host:
|
||||
from lightrag.rerank import custom_rerank
|
||||
|
||||
async def server_rerank_func(
|
||||
|
|
@ -312,10 +312,12 @@ def create_app(args):
|
|||
)
|
||||
|
||||
rerank_model_func = server_rerank_func
|
||||
logger.info(f"Rerank enabled with model: {args.rerank_model}")
|
||||
elif args.enable_rerank:
|
||||
logger.warning(
|
||||
"Rerank enabled but RERANK_BINDING_API_KEY or RERANK_BINDING_HOST not configured. Rerank will be disabled."
|
||||
logger.info(
|
||||
f"Rerank model configured: {args.rerank_model} (can be enabled per query)"
|
||||
)
|
||||
else:
|
||||
logger.info(
|
||||
"Rerank model not configured. Set RERANK_BINDING_API_KEY and RERANK_BINDING_HOST to enable reranking."
|
||||
)
|
||||
|
||||
# Initialize RAG
|
||||
|
|
@ -351,7 +353,6 @@ def create_app(args):
|
|||
},
|
||||
enable_llm_cache_for_entity_extract=args.enable_llm_cache_for_extract,
|
||||
enable_llm_cache=args.enable_llm_cache,
|
||||
enable_rerank=args.enable_rerank,
|
||||
rerank_model_func=rerank_model_func,
|
||||
auto_manage_storages_states=False,
|
||||
max_parallel_insert=args.max_parallel_insert,
|
||||
|
|
@ -381,7 +382,6 @@ def create_app(args):
|
|||
},
|
||||
enable_llm_cache_for_entity_extract=args.enable_llm_cache_for_extract,
|
||||
enable_llm_cache=args.enable_llm_cache,
|
||||
enable_rerank=args.enable_rerank,
|
||||
rerank_model_func=rerank_model_func,
|
||||
auto_manage_storages_states=False,
|
||||
max_parallel_insert=args.max_parallel_insert,
|
||||
|
|
@ -512,11 +512,13 @@ def create_app(args):
|
|||
"enable_llm_cache": args.enable_llm_cache,
|
||||
"workspace": args.workspace,
|
||||
"max_graph_nodes": args.max_graph_nodes,
|
||||
# Rerank configuration
|
||||
"enable_rerank": args.enable_rerank,
|
||||
"rerank_model": args.rerank_model if args.enable_rerank else None,
|
||||
# Rerank configuration (based on whether rerank model is configured)
|
||||
"enable_rerank": rerank_model_func is not None,
|
||||
"rerank_model": args.rerank_model
|
||||
if rerank_model_func is not None
|
||||
else None,
|
||||
"rerank_binding_host": args.rerank_binding_host
|
||||
if args.enable_rerank
|
||||
if rerank_model_func is not None
|
||||
else None,
|
||||
},
|
||||
"auth_mode": auth_mode,
|
||||
|
|
|
|||
|
|
@ -52,13 +52,7 @@ class QueryRequest(BaseModel):
|
|||
chunk_top_k: Optional[int] = Field(
|
||||
ge=1,
|
||||
default=None,
|
||||
description="Number of text chunks to retrieve initially from vector search.",
|
||||
)
|
||||
|
||||
chunk_rerank_top_k: Optional[int] = Field(
|
||||
ge=1,
|
||||
default=None,
|
||||
description="Number of text chunks to keep after reranking.",
|
||||
description="Number of text chunks to retrieve initially from vector search and keep after reranking.",
|
||||
)
|
||||
|
||||
max_entity_tokens: Optional[int] = Field(
|
||||
|
|
@ -99,6 +93,11 @@ class QueryRequest(BaseModel):
|
|||
description="User-provided prompt for the query. If provided, this will be used instead of the default value from prompt template.",
|
||||
)
|
||||
|
||||
enable_rerank: Optional[bool] = Field(
|
||||
default=None,
|
||||
description="Enable reranking for retrieved text chunks. If True but no rerank model is configured, a warning will be issued. Default is True.",
|
||||
)
|
||||
|
||||
@field_validator("query", mode="after")
|
||||
@classmethod
|
||||
def query_strip_after(cls, query: str) -> str:
|
||||
|
|
|
|||
1
lightrag/api/webui/assets/_basePickBy-DR8u580m.js
generated
Normal file
1
lightrag/api/webui/assets/_basePickBy-DR8u580m.js
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{e as v,c as O,g as b,k as P,h as p,j as w,l as c,m as A,n as x,t as N,o as _}from"./_baseUniq-CKkyFsDq.js";import{a_ as g,aw as $,a$ as E,b0 as F,b1 as M,b2 as I,b3 as B,b4 as T,b5 as y,b6 as S}from"./mermaid-vendor-0pb-wSh1.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var m=NaN,q=/^[-+]0x[0-9a-f]+$/i,z=/^0b[01]+$/i,C=/^0o[0-7]+$/i,K=parseInt;function W(n){if(typeof n=="number")return n;if(v(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=z.test(n);return t||C.test(n)?K(n.slice(2),t?2:8):q.test(n)?m:+n}var o=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=W(n),n===o||n===-o){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,i){var a=Object(r);if(!I(r)){var f=b(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var U=Math.max;function Z(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:D(t);return a<0&&(a=U(i+a,0)),p(n,b(r),a)}var hn=Q(Z);function V(n,r){var t=-1,i=I(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,b(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function bn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!v(e):t(e,s)))var s=e,d=f}return d}function mn(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function on(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,x(e,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,bn as h,dn as i,D as j,un as l,gn as m,Y as t};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{e as v,c as b,g as m,k as O,h as P,j as p,l as w,m as c,n as x,t as A,o as N}from"./_baseUniq-DdWiKhjG.js";import{aU as g,aq as _,aV as $,aW as E,aX as F,aY as I,aZ as M,a_ as y,a$ as B,b0 as T}from"./mermaid-vendor-DxNSvhPA.js";var S=/\s/;function q(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,q(n)+1).replace(G,"")}var o=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,W=/^0o[0-7]+$/i,X=parseInt;function Y(n){if(typeof n=="number")return n;if(v(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||W.test(n)?X(n.slice(2),t?2:8):L.test(n)?o:+n}var z=1/0,C=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=Y(n),n===z||n===-1/0){var r=n<0?-1:1;return r*C}return n===n?n:0}function U(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,Z=l.hasOwnProperty,dn=_(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&$(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=E(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||F(h,l[u])&&!Z.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=m(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var J=Math.max;function Q(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:U(t);return a<0&&(a=J(e+a,0)),P(n,m(r),a)}var hn=D(Q);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=M(n)?w:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&c(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!v(i):t(i,s)))var s=i,d=f}return d}function on(n){return n&&n.length?tn(n,y,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=A(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,U as j,un as l,gn as m,K as t};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
36
lightrag/api/webui/assets/architectureDiagram-NQ2NVSRB-w6nCd0Ti.js
generated
Normal file
36
lightrag/api/webui/assets/architectureDiagram-NQ2NVSRB-w6nCd0Ti.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
122
lightrag/api/webui/assets/blockDiagram-PHRCVELO-B3UgnL3C.js
generated
Normal file
122
lightrag/api/webui/assets/blockDiagram-PHRCVELO-B3UgnL3C.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{_ as l}from"./mermaid-vendor-DxNSvhPA.js";function m(e,c){var i,t,o;e.accDescr&&((i=c.setAccDescription)==null||i.call(c,e.accDescr)),e.accTitle&&((t=c.setAccTitle)==null||t.call(c,e.accTitle)),e.title&&((o=c.setDiagramTitle)==null||o.call(c,e.title))}l(m,"populateCommonDb");export{m as p};
|
||||
import{_ as l}from"./mermaid-vendor-0pb-wSh1.js";function m(e,c){var i,t,o;e.accDescr&&((i=c.setAccDescription)==null||i.call(c,e.accDescr)),e.accTitle&&((t=c.setAccTitle)==null||t.call(c,e.accTitle)),e.title&&((o=c.setDiagramTitle)==null||o.call(c,e.title))}l(m,"populateCommonDb");export{m as p};
|
||||
|
|
@ -1 +1 @@
|
|||
import{_ as n,a1 as x,j as l}from"./mermaid-vendor-DxNSvhPA.js";var c=n((a,t)=>{const e=a.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const r in t.attrs)e.attr(r,t.attrs[r]);return t.class&&e.attr("class",t.class),e},"drawRect"),d=n((a,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};c(a,e).lower()},"drawBackgroundRect"),g=n((a,t)=>{const e=t.text.replace(x," "),r=a.append("text");r.attr("x",t.x),r.attr("y",t.y),r.attr("class","legend"),r.style("text-anchor",t.anchor),t.class&&r.attr("class",t.class);const s=r.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),r},"drawText"),h=n((a,t,e,r)=>{const s=a.append("image");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",i)},"drawImage"),m=n((a,t,e,r)=>{const s=a.append("use");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",`#${i}`)},"drawEmbeddedImage"),y=n(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=n(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{d as a,p as b,m as c,c as d,h as e,g as f,y as g};
|
||||
import{_ as n,a2 as o,j as l}from"./mermaid-vendor-0pb-wSh1.js";var x=n((a,t)=>{const e=a.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const r in t.attrs)e.attr(r,t.attrs[r]);return t.class&&e.attr("class",t.class),e},"drawRect"),d=n((a,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(a,e).lower()},"drawBackgroundRect"),g=n((a,t)=>{const e=t.text.replace(o," "),r=a.append("text");r.attr("x",t.x),r.attr("y",t.y),r.attr("class","legend"),r.style("text-anchor",t.anchor),t.class&&r.attr("class",t.class);const s=r.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),r},"drawText"),h=n((a,t,e,r)=>{const s=a.append("image");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",i)},"drawImage"),m=n((a,t,e,r)=>{const s=a.append("use");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",`#${i}`)},"drawEmbeddedImage"),y=n(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=n(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{d as a,p as b,m as c,x as d,h as e,g as f,y as g};
|
||||
220
lightrag/api/webui/assets/chunk-6OLS64BW-DprZxoQ9.js
generated
Normal file
220
lightrag/api/webui/assets/chunk-6OLS64BW-DprZxoQ9.js
generated
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
import{_ as s}from"./mermaid-vendor-DxNSvhPA.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as I};
|
||||
import{_ as s}from"./mermaid-vendor-0pb-wSh1.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as I};
|
||||
220
lightrag/api/webui/assets/chunk-AEK57VVT-D9reeTsn.js
generated
220
lightrag/api/webui/assets/chunk-AEK57VVT-D9reeTsn.js
generated
File diff suppressed because one or more lines are too long
1
lightrag/api/webui/assets/chunk-BFAMUDN2-BhkXHAMT.js
generated
Normal file
1
lightrag/api/webui/assets/chunk-BFAMUDN2-BhkXHAMT.js
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,d as o}from"./mermaid-vendor-0pb-wSh1.js";var d=a((t,e)=>{let n;return e==="sandbox"&&(n=o("#i"+t)),(e==="sandbox"?o(n.nodes()[0].contentDocument.body):o("body")).select(`[id="${t}"]`)},"getDiagramElement");export{d as g};
|
||||
15
lightrag/api/webui/assets/chunk-E2GYISFI-CqnVcYld.js
generated
Normal file
15
lightrag/api/webui/assets/chunk-E2GYISFI-CqnVcYld.js
generated
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import{_ as e}from"./mermaid-vendor-0pb-wSh1.js";var l=e(()=>`
|
||||
/* Font Awesome icon styling - consolidated */
|
||||
.label-icon {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -0.125em;
|
||||
}
|
||||
|
||||
.node .label-icon path {
|
||||
fill: currentColor;
|
||||
stroke: revert;
|
||||
stroke-width: revert;
|
||||
}
|
||||
`,"getIconStyles");export{l as g};
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
import{_ as n,d as r,e as d,l as g}from"./mermaid-vendor-DxNSvhPA.js";var u=n((e,t)=>{let o;return t==="sandbox"&&(o=r("#i"+e)),(t==="sandbox"?r(o.nodes()[0].contentDocument.body):r("body")).select(`[id="${e}"]`)},"getDiagramElement"),b=n((e,t,o,i)=>{e.attr("class",o);const{width:a,height:s,x:h,y:x}=l(e,t);d(e,s,a,i);const c=w(h,x,a,s,t);e.attr("viewBox",c),g.debug(`viewBox configured: ${c} with padding: ${t}`)},"setupViewPortForSVG"),l=n((e,t)=>{var i;const o=((i=e.node())==null?void 0:i.getBBox())||{width:0,height:0,x:0,y:0};return{width:o.width+t*2,height:o.height+t*2,x:o.x,y:o.y}},"calculateDimensionsWithPadding"),w=n((e,t,o,i,a)=>`${e-a} ${t-a} ${o} ${i}`,"createViewBox");export{u as g,b as s};
|
||||
1
lightrag/api/webui/assets/chunk-SKB7J2MH-BblaHGx6.js
generated
Normal file
1
lightrag/api/webui/assets/chunk-SKB7J2MH-BblaHGx6.js
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{_ as a,e as w,l as x}from"./mermaid-vendor-0pb-wSh1.js";var d=a((e,t,i,o)=>{e.attr("class",i);const{width:r,height:h,x:n,y:c}=u(e,t);w(e,h,r,o);const s=l(n,c,r,h,t);e.attr("viewBox",s),x.debug(`viewBox configured: ${s} with padding: ${t}`)},"setupViewPortForSVG"),u=a((e,t)=>{var o;const i=((o=e.node())==null?void 0:o.getBBox())||{width:0,height:0,x:0,y:0};return{width:i.width+t*2,height:i.height+t*2,x:i.x,y:i.y}},"calculateDimensionsWithPadding"),l=a((e,t,i,o,r)=>`${e-r} ${t-r} ${i} ${o}`,"createViewBox");export{d as s};
|
||||
1
lightrag/api/webui/assets/classDiagram-BGRH5UQR-B9E8imAB.js
generated
Normal file
1
lightrag/api/webui/assets/classDiagram-BGRH5UQR-B9E8imAB.js
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{s as a,c as s,a as e,C as t}from"./chunk-QEP2MXWD-Bk9mYvop.js";import{_ as i}from"./mermaid-vendor-0pb-wSh1.js";import"./chunk-E2GYISFI-CqnVcYld.js";import"./chunk-BFAMUDN2-BhkXHAMT.js";import"./chunk-SKB7J2MH-BblaHGx6.js";import"./feature-graph-CTyfN-T7.js";import"./react-vendor-CgPb4pW_.js";import"./graph-vendor-BC3frDkq.js";import"./ui-vendor-DaJTMqwy.js";import"./utils-vendor-elCzPYZl.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{s as a,c as s,a as e,C as t}from"./chunk-A2AXSNBT-Nn-DDv3A.js";import{_ as i}from"./mermaid-vendor-DxNSvhPA.js";import"./chunk-RZ5BOZE2-DQT2Xkjs.js";import"./feature-graph-ajMjCROw.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var f={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{s as a,c as s,a as e,C as t}from"./chunk-A2AXSNBT-Nn-DDv3A.js";import{_ as i}from"./mermaid-vendor-DxNSvhPA.js";import"./chunk-RZ5BOZE2-DQT2Xkjs.js";import"./feature-graph-ajMjCROw.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var f={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram};
|
||||
1
lightrag/api/webui/assets/classDiagram-v2-O24JOBDK-B9E8imAB.js
generated
Normal file
1
lightrag/api/webui/assets/classDiagram-v2-O24JOBDK-B9E8imAB.js
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{s as a,c as s,a as e,C as t}from"./chunk-QEP2MXWD-Bk9mYvop.js";import{_ as i}from"./mermaid-vendor-0pb-wSh1.js";import"./chunk-E2GYISFI-CqnVcYld.js";import"./chunk-BFAMUDN2-BhkXHAMT.js";import"./chunk-SKB7J2MH-BblaHGx6.js";import"./feature-graph-CTyfN-T7.js";import"./react-vendor-CgPb4pW_.js";import"./graph-vendor-BC3frDkq.js";import"./ui-vendor-DaJTMqwy.js";import"./utils-vendor-elCzPYZl.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
||||
1
lightrag/api/webui/assets/clone-CMIdR30B.js
generated
Normal file
1
lightrag/api/webui/assets/clone-CMIdR30B.js
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{b as r}from"./_baseUniq-CKkyFsDq.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
||||
1
lightrag/api/webui/assets/clone-Cy0pbWCc.js
generated
1
lightrag/api/webui/assets/clone-Cy0pbWCc.js
generated
|
|
@ -1 +0,0 @@
|
|||
import{b as r}from"./_baseUniq-DdWiKhjG.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
||||
191
lightrag/api/webui/assets/cytoscape.esm-CfBqOv7Q.js
generated
191
lightrag/api/webui/assets/cytoscape.esm-CfBqOv7Q.js
generated
File diff suppressed because one or more lines are too long
331
lightrag/api/webui/assets/cytoscape.esm-DjuLyO2d.js
generated
Normal file
331
lightrag/api/webui/assets/cytoscape.esm-DjuLyO2d.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
24
lightrag/api/webui/assets/diagram-3EMPZRKU-C3dfJoE4.js
generated
Normal file
24
lightrag/api/webui/assets/diagram-3EMPZRKU-C3dfJoE4.js
generated
Normal file
File diff suppressed because one or more lines are too long
24
lightrag/api/webui/assets/diagram-5UYTHUR4-C4ExlZGh.js
generated
Normal file
24
lightrag/api/webui/assets/diagram-5UYTHUR4-C4ExlZGh.js
generated
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import{p as y}from"./chunk-353BL4L5-DBAQDRRL.js";import{_ as l,s as B,g as S,t as z,q as F,a as P,b as E,F as v,K as W,e as T,z as D,G as _,H as A,l as w}from"./mermaid-vendor-0pb-wSh1.js";import{p as N}from"./treemap-6Y5VK53G-Cu50KCbJ.js";import"./feature-graph-CTyfN-T7.js";import"./react-vendor-CgPb4pW_.js";import"./graph-vendor-BC3frDkq.js";import"./ui-vendor-DaJTMqwy.js";import"./utils-vendor-elCzPYZl.js";import"./_baseUniq-CKkyFsDq.js";import"./_basePickBy-DR8u580m.js";import"./clone-CMIdR30B.js";var x={packet:[]},m=structuredClone(x),L=A.packet,Y=l(()=>{const t=v({...L,..._().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),G=l(()=>m.packet,"getPacket"),H=l(t=>{t.length>0&&m.packet.push(t)},"pushWord"),I=l(()=>{D(),m=structuredClone(x)},"clear"),u={pushWord:H,getPacket:G,getConfig:Y,clear:I,setAccTitle:E,getAccTitle:P,setDiagramTitle:F,getDiagramTitle:z,getAccDescription:S,setAccDescription:B},K=1e4,M=l(t=>{y(t,u);let e=-1,o=[],i=1;const{bitsPerRow:s}=u.getConfig();for(let{start:a,end:r,bits:c,label:f}of t.blocks){if(a!==void 0&&r!==void 0&&r<a)throw new Error(`Packet block ${a} - ${r} is invalid. End must be greater than start.`);if(a??(a=e+1),a!==e+1)throw new Error(`Packet block ${a} - ${r??a} is not contiguous. It should start from ${e+1}.`);if(c===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(r??(r=a+(c??1)-1),c??(c=r-a+1),e=r,w.debug(`Packet block ${a} - ${e} with label ${f}`);o.length<=s+1&&u.getPacket().length<K;){const[d,p]=O({start:a,end:r,bits:c,label:f},i,s);if(o.push(d),d.end+1===i*s&&(u.pushWord(o),o=[],i++),!p)break;({start:a,end:r,bits:c,label:f}=p)}}u.pushWord(o)},"populate"),O=l((t,e,o)=>{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*o)return[t,void 0];const i=e*o-1,s=e*o;return[{start:t.start,end:i,label:t.label,bits:i-t.start},{start:s,end:t.end,label:t.label,bits:t.end-s}]},"getNextFittingBlock"),q={parse:l(async t=>{const e=await N("packet",t);w.debug(e),M(e)},"parse")},R=l((t,e,o,i)=>{const s=i.db,a=s.getConfig(),{rowHeight:r,paddingY:c,bitWidth:f,bitsPerRow:d}=a,p=s.getPacket(),n=s.getDiagramTitle(),k=r+c,g=k*(p.length+1)-(n?0:r),b=f*d+2,h=W(e);h.attr("viewbox",`0 0 ${b} ${g}`),T(h,g,b,a.useMaxWidth);for(const[C,$]of p.entries())U(h,$,C,a);h.append("text").text(n).attr("x",b/2).attr("y",g-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),U=l((t,e,o,{rowHeight:i,paddingX:s,paddingY:a,bitWidth:r,bitsPerRow:c,showBits:f})=>{const d=t.append("g"),p=o*(i+a)+a;for(const n of e){const k=n.start%c*r+1,g=(n.end-n.start+1)*r-s;if(d.append("rect").attr("x",k).attr("y",p).attr("width",g).attr("height",i).attr("class","packetBlock"),d.append("text").attr("x",k+g/2).attr("y",p+i/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(n.label),!f)continue;const b=n.end===n.start,h=p-2;d.append("text").attr("x",k+(b?g/2:0)).attr("y",h).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",b?"middle":"start").text(n.start),b||d.append("text").attr("x",k+g).attr("y",h).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(n.end)}},"drawWord"),X={draw:R},j={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},J=l(({packet:t}={})=>{const e=v(j,t);return`
|
||||
.packetByte {
|
||||
font-size: ${e.byteFontSize};
|
||||
}
|
||||
.packetByte.start {
|
||||
fill: ${e.startByteColor};
|
||||
}
|
||||
.packetByte.end {
|
||||
fill: ${e.endByteColor};
|
||||
}
|
||||
.packetLabel {
|
||||
fill: ${e.labelColor};
|
||||
font-size: ${e.labelFontSize};
|
||||
}
|
||||
.packetTitle {
|
||||
fill: ${e.titleColor};
|
||||
font-size: ${e.titleFontSize};
|
||||
}
|
||||
.packetBlock {
|
||||
stroke: ${e.blockStrokeColor};
|
||||
stroke-width: ${e.blockStrokeWidth};
|
||||
fill: ${e.blockFillColor};
|
||||
}
|
||||
`},"styles"),lt={parser:q,db:u,renderer:X,styles:J};export{lt as diagram};
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
import{p as k}from"./chunk-4BMEZGHF-B5GU8YSo.js";import{_ as l,s as R,g as F,t as I,q as _,a as E,b as D,K as G,z,F as y,G as C,H as P,l as H,Q as V}from"./mermaid-vendor-DxNSvhPA.js";import{p as W}from"./radar-MK3ICKWK-Bc8q4S1r.js";import"./feature-graph-ajMjCROw.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-DdWiKhjG.js";import"./_basePickBy-DdjSt9r0.js";import"./clone-Cy0pbWCc.js";var h={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},w={axes:[],curves:[],options:h},g=structuredClone(w),B=P.radar,j=l(()=>y({...B,...C().radar}),"getConfig"),b=l(()=>g.axes,"getAxes"),q=l(()=>g.curves,"getCurves"),K=l(()=>g.options,"getOptions"),N=l(a=>{g.axes=a.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),Q=l(a=>{g.curves=a.map(t=>({name:t.name,label:t.label??t.name,entries:U(t.entries)}))},"setCurves"),U=l(a=>{if(a[0].axis==null)return a.map(e=>e.value);const t=b();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{const r=a.find(s=>{var o;return((o=s.axis)==null?void 0:o.$refText)===e.name});if(r===void 0)throw new Error("Missing entry for axis "+e.label);return r.value})},"computeCurveEntries"),X=l(a=>{var e,r,s,o,i;const t=a.reduce((n,c)=>(n[c.name]=c,n),{});g.options={showLegend:((e=t.showLegend)==null?void 0:e.value)??h.showLegend,ticks:((r=t.ticks)==null?void 0:r.value)??h.ticks,max:((s=t.max)==null?void 0:s.value)??h.max,min:((o=t.min)==null?void 0:o.value)??h.min,graticule:((i=t.graticule)==null?void 0:i.value)??h.graticule}},"setOptions"),Y=l(()=>{z(),g=structuredClone(w)},"clear"),$={getAxes:b,getCurves:q,getOptions:K,setAxes:N,setCurves:Q,setOptions:X,getConfig:j,clear:Y,setAccTitle:D,getAccTitle:E,setDiagramTitle:_,getDiagramTitle:I,getAccDescription:F,setAccDescription:R},Z=l(a=>{k(a,$);const{axes:t,curves:e,options:r}=a;$.setAxes(t),$.setCurves(e),$.setOptions(r)},"populate"),J={parse:l(async a=>{const t=await W("radar",a);H.debug(t),Z(t)},"parse")},tt=l((a,t,e,r)=>{const s=r.db,o=s.getAxes(),i=s.getCurves(),n=s.getOptions(),c=s.getConfig(),d=s.getDiagramTitle(),u=G(t),p=et(u,c),m=n.max??Math.max(...i.map(f=>Math.max(...f.entries))),x=n.min,v=Math.min(c.width,c.height)/2;at(p,o,v,n.ticks,n.graticule),rt(p,o,v,c),M(p,o,i,x,m,n.graticule,c),T(p,i,n.showLegend,c),p.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),et=l((a,t)=>{const e=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,s={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return a.attr("viewbox",`0 0 ${e} ${r}`).attr("width",e).attr("height",r),a.append("g").attr("transform",`translate(${s.x}, ${s.y})`)},"drawFrame"),at=l((a,t,e,r,s)=>{if(s==="circle")for(let o=0;o<r;o++){const i=e*(o+1)/r;a.append("circle").attr("r",i).attr("class","radarGraticule")}else if(s==="polygon"){const o=t.length;for(let i=0;i<r;i++){const n=e*(i+1)/r,c=t.map((d,u)=>{const p=2*u*Math.PI/o-Math.PI/2,m=n*Math.cos(p),x=n*Math.sin(p);return`${m},${x}`}).join(" ");a.append("polygon").attr("points",c).attr("class","radarGraticule")}}},"drawGraticule"),rt=l((a,t,e,r)=>{const s=t.length;for(let o=0;o<s;o++){const i=t[o].label,n=2*o*Math.PI/s-Math.PI/2;a.append("line").attr("x1",0).attr("y1",0).attr("x2",e*r.axisScaleFactor*Math.cos(n)).attr("y2",e*r.axisScaleFactor*Math.sin(n)).attr("class","radarAxisLine"),a.append("text").text(i).attr("x",e*r.axisLabelFactor*Math.cos(n)).attr("y",e*r.axisLabelFactor*Math.sin(n)).attr("class","radarAxisLabel")}},"drawAxes");function M(a,t,e,r,s,o,i){const n=t.length,c=Math.min(i.width,i.height)/2;e.forEach((d,u)=>{if(d.entries.length!==n)return;const p=d.entries.map((m,x)=>{const v=2*Math.PI*x/n-Math.PI/2,f=A(m,r,s,c),O=f*Math.cos(v),S=f*Math.sin(v);return{x:O,y:S}});o==="circle"?a.append("path").attr("d",L(p,i.curveTension)).attr("class",`radarCurve-${u}`):o==="polygon"&&a.append("polygon").attr("points",p.map(m=>`${m.x},${m.y}`).join(" ")).attr("class",`radarCurve-${u}`)})}l(M,"drawCurves");function A(a,t,e,r){const s=Math.min(Math.max(a,t),e);return r*(s-t)/(e-t)}l(A,"relativeRadius");function L(a,t){const e=a.length;let r=`M${a[0].x},${a[0].y}`;for(let s=0;s<e;s++){const o=a[(s-1+e)%e],i=a[s],n=a[(s+1)%e],c=a[(s+2)%e],d={x:i.x+(n.x-o.x)*t,y:i.y+(n.y-o.y)*t},u={x:n.x-(c.x-i.x)*t,y:n.y-(c.y-i.y)*t};r+=` C${d.x},${d.y} ${u.x},${u.y} ${n.x},${n.y}`}return`${r} Z`}l(L,"closedRoundCurve");function T(a,t,e,r){if(!e)return;const s=(r.width/2+r.marginRight)*3/4,o=-(r.height/2+r.marginTop)*3/4,i=20;t.forEach((n,c)=>{const d=a.append("g").attr("transform",`translate(${s}, ${o+c*i})`);d.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${c}`),d.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(n.label)})}l(T,"drawLegend");var st={draw:tt},nt=l((a,t)=>{let e="";for(let r=0;r<a.THEME_COLOR_LIMIT;r++){const s=a[`cScale${r}`];e+=`
|
||||
.radarCurve-${r} {
|
||||
color: ${s};
|
||||
fill: ${s};
|
||||
fill-opacity: ${t.curveOpacity};
|
||||
stroke: ${s};
|
||||
stroke-width: ${t.curveStrokeWidth};
|
||||
}
|
||||
.radarLegendBox-${r} {
|
||||
fill: ${s};
|
||||
fill-opacity: ${t.curveOpacity};
|
||||
stroke: ${s};
|
||||
}
|
||||
`}return e},"genIndexStyles"),ot=l(a=>{const t=V(),e=C(),r=y(t,e.themeVariables),s=y(r.radar,a);return{themeVariables:r,radarOptions:s}},"buildRadarStyleOptions"),it=l(({radar:a}={})=>{const{themeVariables:t,radarOptions:e}=ot(a);return`
|
||||
.radarTitle {
|
||||
font-size: ${t.fontSize};
|
||||
color: ${t.titleColor};
|
||||
dominant-baseline: hanging;
|
||||
text-anchor: middle;
|
||||
}
|
||||
.radarAxisLine {
|
||||
stroke: ${e.axisColor};
|
||||
stroke-width: ${e.axisStrokeWidth};
|
||||
}
|
||||
.radarAxisLabel {
|
||||
dominant-baseline: middle;
|
||||
text-anchor: middle;
|
||||
font-size: ${e.axisLabelFontSize}px;
|
||||
color: ${e.axisColor};
|
||||
}
|
||||
.radarGraticule {
|
||||
fill: ${e.graticuleColor};
|
||||
fill-opacity: ${e.graticuleOpacity};
|
||||
stroke: ${e.graticuleColor};
|
||||
stroke-width: ${e.graticuleStrokeWidth};
|
||||
}
|
||||
.radarLegendText {
|
||||
text-anchor: start;
|
||||
font-size: ${e.legendFontSize}px;
|
||||
dominant-baseline: hanging;
|
||||
}
|
||||
${nt(t,e)}
|
||||
`},"styles"),ft={parser:J,db:$,renderer:st,styles:it};export{ft as diagram};
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
import{p as w}from"./chunk-4BMEZGHF-B5GU8YSo.js";import{_ as n,s as B,g as S,t as F,q as z,a as P,b as W,F as x,K as T,e as D,z as _,G as A,H as E,l as v}from"./mermaid-vendor-DxNSvhPA.js";import{p as N}from"./radar-MK3ICKWK-Bc8q4S1r.js";import"./feature-graph-ajMjCROw.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-DdWiKhjG.js";import"./_basePickBy-DdjSt9r0.js";import"./clone-Cy0pbWCc.js";var C={packet:[]},h=structuredClone(C),L=E.packet,Y=n(()=>{const t=x({...L,...A().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),G=n(()=>h.packet,"getPacket"),H=n(t=>{t.length>0&&h.packet.push(t)},"pushWord"),I=n(()=>{_(),h=structuredClone(C)},"clear"),m={pushWord:H,getPacket:G,getConfig:Y,clear:I,setAccTitle:W,getAccTitle:P,setDiagramTitle:z,getDiagramTitle:F,getAccDescription:S,setAccDescription:B},K=1e4,M=n(t=>{w(t,m);let e=-1,o=[],s=1;const{bitsPerRow:i}=m.getConfig();for(let{start:a,end:r,label:p}of t.blocks){if(r&&r<a)throw new Error(`Packet block ${a} - ${r} is invalid. End must be greater than start.`);if(a!==e+1)throw new Error(`Packet block ${a} - ${r??a} is not contiguous. It should start from ${e+1}.`);for(e=r??a,v.debug(`Packet block ${a} - ${e} with label ${p}`);o.length<=i+1&&m.getPacket().length<K;){const[b,c]=O({start:a,end:r,label:p},s,i);if(o.push(b),b.end+1===s*i&&(m.pushWord(o),o=[],s++),!c)break;({start:a,end:r,label:p}=c)}}m.pushWord(o)},"populate"),O=n((t,e,o)=>{if(t.end===void 0&&(t.end=t.start),t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);return t.end+1<=e*o?[t,void 0]:[{start:t.start,end:e*o-1,label:t.label},{start:e*o,end:t.end,label:t.label}]},"getNextFittingBlock"),q={parse:n(async t=>{const e=await N("packet",t);v.debug(e),M(e)},"parse")},R=n((t,e,o,s)=>{const i=s.db,a=i.getConfig(),{rowHeight:r,paddingY:p,bitWidth:b,bitsPerRow:c}=a,u=i.getPacket(),l=i.getDiagramTitle(),g=r+p,d=g*(u.length+1)-(l?0:r),k=b*c+2,f=T(e);f.attr("viewbox",`0 0 ${k} ${d}`),D(f,d,k,a.useMaxWidth);for(const[$,y]of u.entries())U(f,y,$,a);f.append("text").text(l).attr("x",k/2).attr("y",d-g/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),U=n((t,e,o,{rowHeight:s,paddingX:i,paddingY:a,bitWidth:r,bitsPerRow:p,showBits:b})=>{const c=t.append("g"),u=o*(s+a)+a;for(const l of e){const g=l.start%p*r+1,d=(l.end-l.start+1)*r-i;if(c.append("rect").attr("x",g).attr("y",u).attr("width",d).attr("height",s).attr("class","packetBlock"),c.append("text").attr("x",g+d/2).attr("y",u+s/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(l.label),!b)continue;const k=l.end===l.start,f=u-2;c.append("text").attr("x",g+(k?d/2:0)).attr("y",f).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(l.start),k||c.append("text").attr("x",g+d).attr("y",f).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(l.end)}},"drawWord"),X={draw:R},j={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},J=n(({packet:t}={})=>{const e=x(j,t);return`
|
||||
.packetByte {
|
||||
font-size: ${e.byteFontSize};
|
||||
}
|
||||
.packetByte.start {
|
||||
fill: ${e.startByteColor};
|
||||
}
|
||||
.packetByte.end {
|
||||
fill: ${e.endByteColor};
|
||||
}
|
||||
.packetLabel {
|
||||
fill: ${e.labelColor};
|
||||
font-size: ${e.labelFontSize};
|
||||
}
|
||||
.packetTitle {
|
||||
fill: ${e.titleColor};
|
||||
font-size: ${e.titleFontSize};
|
||||
}
|
||||
.packetBlock {
|
||||
stroke: ${e.blockStrokeColor};
|
||||
stroke-width: ${e.blockStrokeWidth};
|
||||
fill: ${e.blockFillColor};
|
||||
}
|
||||
`},"styles"),it={parser:q,db:m,renderer:X,styles:J};export{it as diagram};
|
||||
43
lightrag/api/webui/assets/diagram-ZTM2IBQH-Dhuhv0oL.js
generated
Normal file
43
lightrag/api/webui/assets/diagram-ZTM2IBQH-Dhuhv0oL.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
702
lightrag/api/webui/assets/feature-graph-CTyfN-T7.js
generated
Normal file
702
lightrag/api/webui/assets/feature-graph-CTyfN-T7.js
generated
Normal file
File diff suppressed because one or more lines are too long
710
lightrag/api/webui/assets/feature-graph-ajMjCROw.js
generated
710
lightrag/api/webui/assets/feature-graph-ajMjCROw.js
generated
File diff suppressed because one or more lines are too long
10
lightrag/api/webui/assets/feature-retrieval-C4OgyLZ6.js
generated
Normal file
10
lightrag/api/webui/assets/feature-retrieval-C4OgyLZ6.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
162
lightrag/api/webui/assets/flowDiagram-PKI6S5ZS-BEqKRCbS.js
generated
Normal file
162
lightrag/api/webui/assets/flowDiagram-PKI6S5ZS-BEqKRCbS.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
267
lightrag/api/webui/assets/ganttDiagram-EK5VF46D-CUMAN_qk.js
generated
Normal file
267
lightrag/api/webui/assets/ganttDiagram-EK5VF46D-CUMAN_qk.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
65
lightrag/api/webui/assets/gitGraphDiagram-GW3U2K7C-CM_W77RX.js
generated
Normal file
65
lightrag/api/webui/assets/gitGraphDiagram-GW3U2K7C-CM_W77RX.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
lightrag/api/webui/assets/index-BXW7ZC7b.css
generated
Normal file
1
lightrag/api/webui/assets/index-BXW7ZC7b.css
generated
Normal file
File diff suppressed because one or more lines are too long
151
lightrag/api/webui/assets/index-BZ-Qnuxe.js
generated
151
lightrag/api/webui/assets/index-BZ-Qnuxe.js
generated
File diff suppressed because one or more lines are too long
3
lightrag/api/webui/assets/index-C1kPL13a.js
generated
Normal file
3
lightrag/api/webui/assets/index-C1kPL13a.js
generated
Normal file
File diff suppressed because one or more lines are too long
263
lightrag/api/webui/assets/index-Cdh43tIs.js
generated
263
lightrag/api/webui/assets/index-Cdh43tIs.js
generated
File diff suppressed because one or more lines are too long
1
lightrag/api/webui/assets/index-DwO2XWaU.css
generated
1
lightrag/api/webui/assets/index-DwO2XWaU.css
generated
File diff suppressed because one or more lines are too long
151
lightrag/api/webui/assets/index-P-DdP8A0.js
generated
Normal file
151
lightrag/api/webui/assets/index-P-DdP8A0.js
generated
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +0,0 @@
|
|||
import{_ as e,l as o,K as i,e as n,L as p}from"./mermaid-vendor-DxNSvhPA.js";import{p as m}from"./radar-MK3ICKWK-Bc8q4S1r.js";import"./feature-graph-ajMjCROw.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-DdWiKhjG.js";import"./_basePickBy-DdjSt9r0.js";import"./clone-Cy0pbWCc.js";var g={parse:e(async r=>{const a=await m("info",r);o.debug(a)},"parse")},v={version:p.version},d=e(()=>v.version,"getVersion"),c={getVersion:d},l=e((r,a,s)=>{o.debug(`rendering info diagram
|
||||
`+r);const t=i(a);n(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${s}`)},"draw"),f={draw:l},L={parser:g,db:c,renderer:f};export{L as diagram};
|
||||
2
lightrag/api/webui/assets/infoDiagram-XT3IWWJI-CO_psN6Q.js
generated
Normal file
2
lightrag/api/webui/assets/infoDiagram-XT3IWWJI-CO_psN6Q.js
generated
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
import{_ as e,l as o,K as i,e as n,L as p}from"./mermaid-vendor-0pb-wSh1.js";import{p as m}from"./treemap-6Y5VK53G-Cu50KCbJ.js";import"./feature-graph-CTyfN-T7.js";import"./react-vendor-CgPb4pW_.js";import"./graph-vendor-BC3frDkq.js";import"./ui-vendor-DaJTMqwy.js";import"./utils-vendor-elCzPYZl.js";import"./_baseUniq-CKkyFsDq.js";import"./_basePickBy-DR8u580m.js";import"./clone-CMIdR30B.js";var g={parse:e(async r=>{const a=await m("info",r);o.debug(a)},"parse")},v={version:p.version+""},d=e(()=>v.version,"getVersion"),c={getVersion:d},l=e((r,a,s)=>{o.debug(`rendering info diagram
|
||||
`+r);const t=i(a);n(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${s}`)},"draw"),f={draw:l},L={parser:g,db:c,renderer:f};export{L as diagram};
|
||||
139
lightrag/api/webui/assets/journeyDiagram-EWQZEKCU-DhazTBPj.js
generated
Normal file
139
lightrag/api/webui/assets/journeyDiagram-EWQZEKCU-DhazTBPj.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
261
lightrag/api/webui/assets/katex-DCmpTppl.js
generated
261
lightrag/api/webui/assets/katex-DCmpTppl.js
generated
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
308
lightrag/api/webui/assets/markdown-vendor-DZPCLF-N.js
generated
Normal file
308
lightrag/api/webui/assets/markdown-vendor-DZPCLF-N.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
213
lightrag/api/webui/assets/mermaid-vendor-0pb-wSh1.js
generated
Normal file
213
lightrag/api/webui/assets/mermaid-vendor-0pb-wSh1.js
generated
Normal file
File diff suppressed because one or more lines are too long
213
lightrag/api/webui/assets/mermaid-vendor-DxNSvhPA.js
generated
213
lightrag/api/webui/assets/mermaid-vendor-DxNSvhPA.js
generated
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
import{p as N}from"./chunk-4BMEZGHF-B5GU8YSo.js";import{_ as i,g as B,s as U,a as q,b as H,t as K,q as V,l as C,c as Z,F as j,K as J,M as Q,N as z,O as X,e as Y,z as tt,P as et,H as at}from"./mermaid-vendor-DxNSvhPA.js";import{p as rt}from"./radar-MK3ICKWK-Bc8q4S1r.js";import"./feature-graph-ajMjCROw.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-DdWiKhjG.js";import"./_basePickBy-DdjSt9r0.js";import"./clone-Cy0pbWCc.js";var it=at.pie,D={sections:new Map,showData:!1},f=D.sections,w=D.showData,st=structuredClone(it),ot=i(()=>structuredClone(st),"getConfig"),nt=i(()=>{f=new Map,w=D.showData,tt()},"clear"),lt=i(({label:t,value:a})=>{f.has(t)||(f.set(t,a),C.debug(`added new section: ${t}, with value: ${a}`))},"addSection"),ct=i(()=>f,"getSections"),pt=i(t=>{w=t},"setShowData"),dt=i(()=>w,"getShowData"),F={getConfig:ot,clear:nt,setDiagramTitle:V,getDiagramTitle:K,setAccTitle:H,getAccTitle:q,setAccDescription:U,getAccDescription:B,addSection:lt,getSections:ct,setShowData:pt,getShowData:dt},gt=i((t,a)=>{N(t,a),a.setShowData(t.showData),t.sections.map(a.addSection)},"populateDb"),ut={parse:i(async t=>{const a=await rt("pie",t);C.debug(a),gt(a,F)},"parse")},mt=i(t=>`
|
||||
import{p as N}from"./chunk-353BL4L5-DBAQDRRL.js";import{_ as i,g as B,s as U,a as q,b as H,t as K,q as V,l as C,c as Z,F as j,K as J,M as Q,N as z,O as X,e as Y,z as tt,P as et,H as at}from"./mermaid-vendor-0pb-wSh1.js";import{p as rt}from"./treemap-6Y5VK53G-Cu50KCbJ.js";import"./feature-graph-CTyfN-T7.js";import"./react-vendor-CgPb4pW_.js";import"./graph-vendor-BC3frDkq.js";import"./ui-vendor-DaJTMqwy.js";import"./utils-vendor-elCzPYZl.js";import"./_baseUniq-CKkyFsDq.js";import"./_basePickBy-DR8u580m.js";import"./clone-CMIdR30B.js";var it=at.pie,D={sections:new Map,showData:!1},f=D.sections,w=D.showData,st=structuredClone(it),ot=i(()=>structuredClone(st),"getConfig"),nt=i(()=>{f=new Map,w=D.showData,tt()},"clear"),lt=i(({label:t,value:a})=>{f.has(t)||(f.set(t,a),C.debug(`added new section: ${t}, with value: ${a}`))},"addSection"),ct=i(()=>f,"getSections"),pt=i(t=>{w=t},"setShowData"),dt=i(()=>w,"getShowData"),F={getConfig:ot,clear:nt,setDiagramTitle:V,getDiagramTitle:K,setAccTitle:H,getAccTitle:q,setAccDescription:U,getAccDescription:B,addSection:lt,getSections:ct,setShowData:pt,getShowData:dt},gt=i((t,a)=>{N(t,a),a.setShowData(t.showData),t.sections.map(a.addSection)},"populateDb"),ut={parse:i(async t=>{const a=await rt("pie",t);C.debug(a),gt(a,F)},"parse")},mt=i(t=>`
|
||||
.pieCircle{
|
||||
stroke: ${t.pieStrokeColor};
|
||||
stroke-width : ${t.pieStrokeWidth};
|
||||
File diff suppressed because one or more lines are too long
128
lightrag/api/webui/assets/radar-MK3ICKWK-Bc8q4S1r.js
generated
128
lightrag/api/webui/assets/radar-MK3ICKWK-Bc8q4S1r.js
generated
File diff suppressed because one or more lines are too long
19
lightrag/api/webui/assets/react-vendor-CgPb4pW_.js
generated
vendored
Normal file
19
lightrag/api/webui/assets/react-vendor-CgPb4pW_.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
28
lightrag/api/webui/assets/react-vendor-DEwriMA6.js
generated
vendored
28
lightrag/api/webui/assets/react-vendor-DEwriMA6.js
generated
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
64
lightrag/api/webui/assets/requirementDiagram-SO3GGRV7-BNtjL9Mr.js
generated
Normal file
64
lightrag/api/webui/assets/requirementDiagram-SO3GGRV7-BNtjL9Mr.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
122
lightrag/api/webui/assets/sequenceDiagram-ZIKVLSP4-DAnSPuBo.js
generated
Normal file
122
lightrag/api/webui/assets/sequenceDiagram-ZIKVLSP4-DAnSPuBo.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
lightrag/api/webui/assets/stateDiagram-XX37X6EN-Wb47NRTE.js
generated
Normal file
1
lightrag/api/webui/assets/stateDiagram-XX37X6EN-Wb47NRTE.js
generated
Normal file
File diff suppressed because one or more lines are too long
1
lightrag/api/webui/assets/stateDiagram-v2-GD6S3NHB-I1pnn6Vf.js
generated
Normal file
1
lightrag/api/webui/assets/stateDiagram-v2-GD6S3NHB-I1pnn6Vf.js
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{s as r,b as e,a,S as i}from"./chunk-6OLS64BW-DprZxoQ9.js";import{_ as s}from"./mermaid-vendor-0pb-wSh1.js";import"./chunk-BFAMUDN2-BhkXHAMT.js";import"./chunk-SKB7J2MH-BblaHGx6.js";import"./feature-graph-CTyfN-T7.js";import"./react-vendor-CgPb4pW_.js";import"./graph-vendor-BC3frDkq.js";import"./ui-vendor-DaJTMqwy.js";import"./utils-vendor-elCzPYZl.js";var f={parser:a,get db(){return new i(2)},renderer:e,styles:r,init:s(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{f as diagram};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{s as r,b as e,a,S as s}from"./chunk-AEK57VVT-D9reeTsn.js";import{_ as i}from"./mermaid-vendor-DxNSvhPA.js";import"./chunk-RZ5BOZE2-DQT2Xkjs.js";import"./feature-graph-ajMjCROw.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var b={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{b as diagram};
|
||||
File diff suppressed because one or more lines are too long
61
lightrag/api/webui/assets/timeline-definition-RI47OAVP-CWkCn9Wa.js
generated
Normal file
61
lightrag/api/webui/assets/timeline-definition-RI47OAVP-CWkCn9Wa.js
generated
Normal file
File diff suppressed because one or more lines are too long
128
lightrag/api/webui/assets/treemap-6Y5VK53G-Cu50KCbJ.js
generated
Normal file
128
lightrag/api/webui/assets/treemap-6Y5VK53G-Cu50KCbJ.js
generated
Normal file
File diff suppressed because one or more lines are too long
53
lightrag/api/webui/assets/ui-vendor-CeCm8EER.js
generated
53
lightrag/api/webui/assets/ui-vendor-CeCm8EER.js
generated
File diff suppressed because one or more lines are too long
53
lightrag/api/webui/assets/ui-vendor-DaJTMqwy.js
generated
Normal file
53
lightrag/api/webui/assets/ui-vendor-DaJTMqwy.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
6
lightrag/api/webui/assets/utils-vendor-elCzPYZl.js
generated
Normal file
6
lightrag/api/webui/assets/utils-vendor-elCzPYZl.js
generated
Normal file
File diff suppressed because one or more lines are too long
7
lightrag/api/webui/assets/xychartDiagram-H2YORKM3-DpPbowlL.js
generated
Normal file
7
lightrag/api/webui/assets/xychartDiagram-H2YORKM3-DpPbowlL.js
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
52
lightrag/api/webui/index.html
generated
52
lightrag/api/webui/index.html
generated
|
|
@ -1,27 +1,27 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<link rel="icon" type="image/png" href="favicon.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Lightrag</title>
|
||||
<script type="module" crossorigin src="/webui/assets/index-BZ-Qnuxe.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/react-vendor-DEwriMA6.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/ui-vendor-CeCm8EER.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/graph-vendor-B-X5JegA.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/utils-vendor-BysuhMZA.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-graph-ajMjCROw.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/mermaid-vendor-DxNSvhPA.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/markdown-vendor-mGl2lXzx.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-retrieval-DVIGk-ao.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-documents--uHlw_9L.js">
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<link rel="icon" type="image/png" href="favicon.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Lightrag</title>
|
||||
<script type="module" crossorigin src="/webui/assets/index-P-DdP8A0.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/react-vendor-CgPb4pW_.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/ui-vendor-DaJTMqwy.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/graph-vendor-BC3frDkq.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/utils-vendor-elCzPYZl.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-graph-CTyfN-T7.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/mermaid-vendor-0pb-wSh1.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/markdown-vendor-DZPCLF-N.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-retrieval-C4OgyLZ6.js">
|
||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-documents-DNEZp_nA.js">
|
||||
<link rel="stylesheet" crossorigin href="/webui/assets/feature-graph-BipNuM18.css">
|
||||
<link rel="stylesheet" crossorigin href="/webui/assets/index-DwO2XWaU.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
||||
<link rel="stylesheet" crossorigin href="/webui/assets/index-BXW7ZC7b.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
2
lightrag/api/webui/logo.svg
generated
2
lightrag/api/webui/logo.svg
generated
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
|
@ -61,15 +61,10 @@ class QueryParam:
|
|||
"""Number of top items to retrieve. Represents entities in 'local' mode and relationships in 'global' mode."""
|
||||
|
||||
chunk_top_k: int = int(os.getenv("CHUNK_TOP_K", "5"))
|
||||
"""Number of text chunks to retrieve initially from vector search.
|
||||
"""Number of text chunks to retrieve initially from vector search and keep after reranking.
|
||||
If None, defaults to top_k value.
|
||||
"""
|
||||
|
||||
chunk_rerank_top_k: int = int(os.getenv("CHUNK_RERANK_TOP_K", "5"))
|
||||
"""Number of text chunks to keep after reranking.
|
||||
If None, keeps all chunks returned from initial retrieval.
|
||||
"""
|
||||
|
||||
max_entity_tokens: int = int(os.getenv("MAX_ENTITY_TOKENS", "10000"))
|
||||
"""Maximum number of tokens allocated for entity context in unified token control system."""
|
||||
|
||||
|
|
@ -107,6 +102,11 @@ class QueryParam:
|
|||
If proivded, this will be use instead of the default vaulue from prompt template.
|
||||
"""
|
||||
|
||||
enable_rerank: bool = True
|
||||
"""Enable reranking for retrieved text chunks. If True but no rerank model is configured, a warning will be issued.
|
||||
Default is True to enable reranking when rerank model is available.
|
||||
"""
|
||||
|
||||
|
||||
@dataclass
|
||||
class StorageNameSpace(ABC):
|
||||
|
|
|
|||
|
|
@ -243,11 +243,6 @@ class LightRAG:
|
|||
# Rerank Configuration
|
||||
# ---
|
||||
|
||||
enable_rerank: bool = field(
|
||||
default=bool(os.getenv("ENABLE_RERANK", "False").lower() == "true")
|
||||
)
|
||||
"""Enable reranking for improved retrieval quality. Defaults to False."""
|
||||
|
||||
rerank_model_func: Callable[..., object] | None = field(default=None)
|
||||
"""Function for reranking retrieved documents. All rerank configurations (model name, API keys, top_k, etc.) should be included in this function. Optional."""
|
||||
|
||||
|
|
@ -459,9 +454,9 @@ class LightRAG:
|
|||
)
|
||||
|
||||
# Init Rerank
|
||||
if self.enable_rerank and self.rerank_model_func:
|
||||
if self.rerank_model_func:
|
||||
logger.info("Rerank model initialized for improved retrieval quality")
|
||||
elif self.enable_rerank and not self.rerank_model_func:
|
||||
else:
|
||||
logger.warning(
|
||||
"Rerank is enabled but no rerank_model_func provided. Reranking will be skipped."
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1976,6 +1976,14 @@ async def _build_query_context(
|
|||
# Truncate entities based on complete JSON serialization
|
||||
if entities_context:
|
||||
original_entity_count = len(entities_context)
|
||||
|
||||
# Process entities context to replace GRAPH_FIELD_SEP with : in file_path fields
|
||||
for entity in entities_context:
|
||||
if "file_path" in entity and entity["file_path"]:
|
||||
entity["file_path"] = entity["file_path"].replace(
|
||||
GRAPH_FIELD_SEP, ";"
|
||||
)
|
||||
|
||||
entities_context = truncate_list_by_token_size(
|
||||
entities_context,
|
||||
key=lambda x: json.dumps(x, ensure_ascii=False),
|
||||
|
|
@ -1990,6 +1998,14 @@ async def _build_query_context(
|
|||
# Truncate relations based on complete JSON serialization
|
||||
if relations_context:
|
||||
original_relation_count = len(relations_context)
|
||||
|
||||
# Process relations context to replace GRAPH_FIELD_SEP with : in file_path fields
|
||||
for relation in relations_context:
|
||||
if "file_path" in relation and relation["file_path"]:
|
||||
relation["file_path"] = relation["file_path"].replace(
|
||||
GRAPH_FIELD_SEP, ";"
|
||||
)
|
||||
|
||||
relations_context = truncate_list_by_token_size(
|
||||
relations_context,
|
||||
key=lambda x: json.dumps(x, ensure_ascii=False),
|
||||
|
|
@ -3025,6 +3041,7 @@ async def apply_rerank_if_enabled(
|
|||
query: str,
|
||||
retrieved_docs: list[dict],
|
||||
global_config: dict,
|
||||
enable_rerank: bool = True,
|
||||
top_k: int = None,
|
||||
) -> list[dict]:
|
||||
"""
|
||||
|
|
@ -3034,18 +3051,19 @@ async def apply_rerank_if_enabled(
|
|||
query: The search query
|
||||
retrieved_docs: List of retrieved documents
|
||||
global_config: Global configuration containing rerank settings
|
||||
enable_rerank: Whether to enable reranking from query parameter
|
||||
top_k: Number of top documents to return after reranking
|
||||
|
||||
Returns:
|
||||
Reranked documents if rerank is enabled, otherwise original documents
|
||||
"""
|
||||
if not global_config.get("enable_rerank", False) or not retrieved_docs:
|
||||
if not enable_rerank or not retrieved_docs:
|
||||
return retrieved_docs
|
||||
|
||||
rerank_func = global_config.get("rerank_model_func")
|
||||
if not rerank_func:
|
||||
logger.debug(
|
||||
"Rerank is enabled but no rerank function provided, skipping rerank"
|
||||
logger.warning(
|
||||
"Rerank is enabled but no rerank model is configured. Please set up a rerank model or set enable_rerank=False in query parameters."
|
||||
)
|
||||
return retrieved_docs
|
||||
|
||||
|
|
@ -3115,12 +3133,13 @@ async def process_chunks_unified(
|
|||
)
|
||||
|
||||
# 2. Apply reranking if enabled and query is provided
|
||||
if global_config.get("enable_rerank", False) and query and unique_chunks:
|
||||
rerank_top_k = query_param.chunk_rerank_top_k or len(unique_chunks)
|
||||
if query_param.enable_rerank and query and unique_chunks:
|
||||
rerank_top_k = query_param.chunk_top_k or len(unique_chunks)
|
||||
unique_chunks = await apply_rerank_if_enabled(
|
||||
query=query,
|
||||
retrieved_docs=unique_chunks,
|
||||
global_config=global_config,
|
||||
enable_rerank=query_param.enable_rerank,
|
||||
top_k=rerank_top_k,
|
||||
)
|
||||
logger.debug(f"Rerank: {len(unique_chunks)} chunks (source: {source_type})")
|
||||
|
|
|
|||
|
|
@ -106,10 +106,8 @@ export type QueryRequest = {
|
|||
stream?: boolean
|
||||
/** Number of top items to retrieve. Represents entities in 'local' mode and relationships in 'global' mode. */
|
||||
top_k?: number
|
||||
/** Maximum number of text chunks to retrieve and process. */
|
||||
/** Maximum number of text chunks to retrieve and keep after reranking. */
|
||||
chunk_top_k?: number
|
||||
/** Number of text chunks to keep after reranking. */
|
||||
chunk_rerank_top_k?: number
|
||||
/** Maximum number of tokens allocated for entity context in unified token control system. */
|
||||
max_entity_tokens?: number
|
||||
/** Maximum number of tokens allocated for relationship context in unified token control system. */
|
||||
|
|
@ -125,6 +123,8 @@ export type QueryRequest = {
|
|||
history_turns?: number
|
||||
/** User-provided prompt for the query. If provided, this will be used instead of the default value from prompt template. */
|
||||
user_prompt?: string
|
||||
/** Enable reranking for retrieved text chunks. If True but no rerank model is configured, a warning will be issued. Default is True. */
|
||||
enable_rerank?: boolean
|
||||
}
|
||||
|
||||
export type QueryResponse = {
|
||||
|
|
|
|||
|
|
@ -120,7 +120,6 @@ export default function QuerySettings() {
|
|||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
{/* Removed sr-only label */}
|
||||
<Input
|
||||
id="top_k"
|
||||
type="number"
|
||||
|
|
@ -176,144 +175,109 @@ export default function QuerySettings() {
|
|||
</div>
|
||||
</>
|
||||
|
||||
{/* Chunk Rerank Top K */}
|
||||
{/* Max Entity Tokens */}
|
||||
<>
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label htmlFor="chunk_rerank_top_k" className="ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.chunkRerankTopK')}
|
||||
<label htmlFor="max_entity_tokens" className="ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.maxEntityTokens')}
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="left">
|
||||
<p>{t('retrievePanel.querySettings.chunkRerankTopKTooltip')}</p>
|
||||
<p>{t('retrievePanel.querySettings.maxEntityTokensTooltip')}</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
<Input
|
||||
id="chunk_rerank_top_k"
|
||||
id="max_entity_tokens"
|
||||
type="number"
|
||||
value={querySettings.chunk_rerank_top_k ?? ''}
|
||||
value={querySettings.max_entity_tokens ?? ''}
|
||||
onChange={(e) => {
|
||||
const value = e.target.value
|
||||
handleChange('chunk_rerank_top_k', value === '' ? '' : parseInt(value) || 0)
|
||||
handleChange('max_entity_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||
}}
|
||||
onBlur={(e) => {
|
||||
const value = e.target.value
|
||||
if (value === '' || isNaN(parseInt(value))) {
|
||||
handleChange('chunk_rerank_top_k', 1)
|
||||
handleChange('max_entity_tokens', 1000)
|
||||
}
|
||||
}}
|
||||
min={1}
|
||||
placeholder={t('retrievePanel.querySettings.chunkRerankTopKPlaceholder')}
|
||||
placeholder={t('retrievePanel.querySettings.maxEntityTokensPlaceholder')}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
|
||||
{/* Max Tokens */}
|
||||
{/* Max Relation Tokens */}
|
||||
<>
|
||||
<>
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label htmlFor="max_entity_tokens" className="ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.maxEntityTokens')}
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="left">
|
||||
<p>{t('retrievePanel.querySettings.maxEntityTokensTooltip')}</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
<Input
|
||||
id="max_entity_tokens"
|
||||
type="number"
|
||||
value={querySettings.max_entity_tokens ?? ''}
|
||||
onChange={(e) => {
|
||||
const value = e.target.value
|
||||
handleChange('max_entity_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||
}}
|
||||
onBlur={(e) => {
|
||||
const value = e.target.value
|
||||
if (value === '' || isNaN(parseInt(value))) {
|
||||
handleChange('max_entity_tokens', 1)
|
||||
}
|
||||
}}
|
||||
min={1}
|
||||
placeholder={t('retrievePanel.querySettings.maxEntityTokens')}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label htmlFor="max_relation_tokens" className="ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.maxRelationTokens')}
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="left">
|
||||
<p>{t('retrievePanel.querySettings.maxRelationTokensTooltip')}</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
<Input
|
||||
id="max_relation_tokens"
|
||||
type="number"
|
||||
value={querySettings.max_relation_tokens ?? ''}
|
||||
onChange={(e) => {
|
||||
const value = e.target.value
|
||||
handleChange('max_relation_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||
}}
|
||||
onBlur={(e) => {
|
||||
const value = e.target.value
|
||||
if (value === '' || isNaN(parseInt(value))) {
|
||||
handleChange('max_relation_tokens', 1000)
|
||||
}
|
||||
}}
|
||||
min={1}
|
||||
placeholder={t('retrievePanel.querySettings.maxRelationTokensPlaceholder')}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
|
||||
<>
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label htmlFor="max_relation_tokens" className="ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.maxRelationTokens')}
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="left">
|
||||
<p>{t('retrievePanel.querySettings.maxRelationTokensTooltip')}</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
<Input
|
||||
id="max_relation_tokens"
|
||||
type="number"
|
||||
value={querySettings.max_relation_tokens ?? ''}
|
||||
onChange={(e) => {
|
||||
const value = e.target.value
|
||||
handleChange('max_relation_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||
}}
|
||||
onBlur={(e) => {
|
||||
const value = e.target.value
|
||||
if (value === '' || isNaN(parseInt(value))) {
|
||||
handleChange('max_relation_tokens', 1)
|
||||
}
|
||||
}}
|
||||
min={1}
|
||||
placeholder={t('retrievePanel.querySettings.maxRelationTokens')}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
|
||||
<>
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label htmlFor="max_total_tokens" className="ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.maxTotalTokens')}
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="left">
|
||||
<p>{t('retrievePanel.querySettings.maxTotalTokensTooltip')}</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
<Input
|
||||
id="max_total_tokens"
|
||||
type="number"
|
||||
value={querySettings.max_total_tokens ?? ''}
|
||||
onChange={(e) => {
|
||||
const value = e.target.value
|
||||
handleChange('max_total_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||
}}
|
||||
onBlur={(e) => {
|
||||
const value = e.target.value
|
||||
if (value === '' || isNaN(parseInt(value))) {
|
||||
handleChange('max_total_tokens', 1)
|
||||
}
|
||||
}}
|
||||
min={1}
|
||||
placeholder={t('retrievePanel.querySettings.maxTotalTokens')}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
{/* Max Total Tokens */}
|
||||
<>
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label htmlFor="max_total_tokens" className="ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.maxTotalTokens')}
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="left">
|
||||
<p>{t('retrievePanel.querySettings.maxTotalTokensTooltip')}</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
<Input
|
||||
id="max_total_tokens"
|
||||
type="number"
|
||||
value={querySettings.max_total_tokens ?? ''}
|
||||
onChange={(e) => {
|
||||
const value = e.target.value
|
||||
handleChange('max_total_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||
}}
|
||||
onBlur={(e) => {
|
||||
const value = e.target.value
|
||||
if (value === '' || isNaN(parseInt(value))) {
|
||||
handleChange('max_total_tokens', 1000)
|
||||
}
|
||||
}}
|
||||
min={1}
|
||||
placeholder={t('retrievePanel.querySettings.maxTotalTokensPlaceholder')}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
|
||||
{/* History Turns */}
|
||||
|
|
@ -331,7 +295,6 @@ export default function QuerySettings() {
|
|||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<div>
|
||||
{/* Removed sr-only label */}
|
||||
<Input
|
||||
id="history_turns"
|
||||
type="number"
|
||||
|
|
@ -442,7 +405,29 @@ export default function QuerySettings() {
|
|||
onCheckedChange={(checked) => handleChange('stream', checked)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-2">
|
||||
<TooltipProvider>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<label htmlFor="enable_rerank" className="flex-1 ml-1 cursor-help">
|
||||
{t('retrievePanel.querySettings.enableRerank')}
|
||||
</label>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="left">
|
||||
<p>{t('retrievePanel.querySettings.enableRerankTooltip')}</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
<Checkbox
|
||||
className="mr-1 cursor-pointer"
|
||||
id="enable_rerank"
|
||||
checked={querySettings.enable_rerank}
|
||||
onCheckedChange={(checked) => handleChange('enable_rerank', checked)}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</CardContent>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue