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."""
|
"""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"))
|
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.
|
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"))
|
max_entity_tokens: int = int(os.getenv("MAX_ENTITY_TOKENS", "10000"))
|
||||||
"""Maximum number of tokens allocated for entity context in unified token control system."""
|
"""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.
|
"""User-provided prompt for the query.
|
||||||
If proivded, this will be use instead of the default vaulue from prompt template.
|
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更改。
|
> 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."""
|
"""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"))
|
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.
|
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"))
|
max_entity_tokens: int = int(os.getenv("MAX_ENTITY_TOKENS", "10000"))
|
||||||
"""Maximum number of tokens allocated for entity context in unified token control system."""
|
"""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.
|
"""User-provided prompt for the query.
|
||||||
If proivded, this will be use instead of the default vaulue from prompt template.
|
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.
|
> 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
|
# COSINE_THRESHOLD=0.2
|
||||||
### Number of entities or relations to retrieve from KG
|
### Number of entities or relations to retrieve from KG
|
||||||
# TOP_K=60
|
# 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
|
# CHUNK_TOP_K=5
|
||||||
|
|
||||||
### Rerank Configuration
|
### Rerank Configuration
|
||||||
# ENABLE_RERANK=False
|
### Note: Reranking is now controlled per query via the 'enable_rerank' parameter (default: true)
|
||||||
### Number of text chunks to keep after reranking (should be <= CHUNK_TOP_K)
|
### The following configuration is only needed when you want to use reranking
|
||||||
# CHUNK_RERANK_TOP_K=5
|
### Rerank model configuration (required when enable_rerank=true in query parameters)
|
||||||
### Rerank model configuration (required when ENABLE_RERANK=True)
|
|
||||||
# RERANK_MODEL=BAAI/bge-reranker-v2-m3
|
# RERANK_MODEL=BAAI/bge-reranker-v2-m3
|
||||||
# RERANK_BINDING_HOST=https://api.your-rerank-provider.com/v1/rerank
|
# RERANK_BINDING_HOST=https://api.your-rerank-provider.com/v1/rerank
|
||||||
# RERANK_BINDING_API_KEY=your_rerank_api_key_here
|
# RERANK_BINDING_API_KEY=your_rerank_api_key_here
|
||||||
|
|
|
||||||
|
|
@ -168,20 +168,8 @@ def parse_args() -> argparse.Namespace:
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--chunk-top-k",
|
"--chunk-top-k",
|
||||||
type=int,
|
type=int,
|
||||||
default=get_env_value("CHUNK_TOP_K", 15, int),
|
default=get_env_value("CHUNK_TOP_K", 5, int),
|
||||||
help="Number of text chunks to retrieve initially from vector search (default: from env or 15)",
|
help="Number of text chunks to retrieve initially from vector search and keep after reranking (default: from env or 5)",
|
||||||
)
|
|
||||||
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)",
|
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--cosine-threshold",
|
"--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
|
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
|
from lightrag.rerank import custom_rerank
|
||||||
|
|
||||||
async def server_rerank_func(
|
async def server_rerank_func(
|
||||||
|
|
@ -312,10 +312,12 @@ def create_app(args):
|
||||||
)
|
)
|
||||||
|
|
||||||
rerank_model_func = server_rerank_func
|
rerank_model_func = server_rerank_func
|
||||||
logger.info(f"Rerank enabled with model: {args.rerank_model}")
|
logger.info(
|
||||||
elif args.enable_rerank:
|
f"Rerank model configured: {args.rerank_model} (can be enabled per query)"
|
||||||
logger.warning(
|
)
|
||||||
"Rerank enabled but RERANK_BINDING_API_KEY or RERANK_BINDING_HOST not configured. Rerank will be disabled."
|
else:
|
||||||
|
logger.info(
|
||||||
|
"Rerank model not configured. Set RERANK_BINDING_API_KEY and RERANK_BINDING_HOST to enable reranking."
|
||||||
)
|
)
|
||||||
|
|
||||||
# Initialize RAG
|
# 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_for_entity_extract=args.enable_llm_cache_for_extract,
|
||||||
enable_llm_cache=args.enable_llm_cache,
|
enable_llm_cache=args.enable_llm_cache,
|
||||||
enable_rerank=args.enable_rerank,
|
|
||||||
rerank_model_func=rerank_model_func,
|
rerank_model_func=rerank_model_func,
|
||||||
auto_manage_storages_states=False,
|
auto_manage_storages_states=False,
|
||||||
max_parallel_insert=args.max_parallel_insert,
|
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_for_entity_extract=args.enable_llm_cache_for_extract,
|
||||||
enable_llm_cache=args.enable_llm_cache,
|
enable_llm_cache=args.enable_llm_cache,
|
||||||
enable_rerank=args.enable_rerank,
|
|
||||||
rerank_model_func=rerank_model_func,
|
rerank_model_func=rerank_model_func,
|
||||||
auto_manage_storages_states=False,
|
auto_manage_storages_states=False,
|
||||||
max_parallel_insert=args.max_parallel_insert,
|
max_parallel_insert=args.max_parallel_insert,
|
||||||
|
|
@ -512,11 +512,13 @@ def create_app(args):
|
||||||
"enable_llm_cache": args.enable_llm_cache,
|
"enable_llm_cache": args.enable_llm_cache,
|
||||||
"workspace": args.workspace,
|
"workspace": args.workspace,
|
||||||
"max_graph_nodes": args.max_graph_nodes,
|
"max_graph_nodes": args.max_graph_nodes,
|
||||||
# Rerank configuration
|
# Rerank configuration (based on whether rerank model is configured)
|
||||||
"enable_rerank": args.enable_rerank,
|
"enable_rerank": rerank_model_func is not None,
|
||||||
"rerank_model": args.rerank_model if args.enable_rerank else None,
|
"rerank_model": args.rerank_model
|
||||||
|
if rerank_model_func is not None
|
||||||
|
else None,
|
||||||
"rerank_binding_host": args.rerank_binding_host
|
"rerank_binding_host": args.rerank_binding_host
|
||||||
if args.enable_rerank
|
if rerank_model_func is not None
|
||||||
else None,
|
else None,
|
||||||
},
|
},
|
||||||
"auth_mode": auth_mode,
|
"auth_mode": auth_mode,
|
||||||
|
|
|
||||||
|
|
@ -52,13 +52,7 @@ class QueryRequest(BaseModel):
|
||||||
chunk_top_k: Optional[int] = Field(
|
chunk_top_k: Optional[int] = Field(
|
||||||
ge=1,
|
ge=1,
|
||||||
default=None,
|
default=None,
|
||||||
description="Number of text chunks to retrieve initially from vector search.",
|
description="Number of text chunks to retrieve initially from vector search and keep after reranking.",
|
||||||
)
|
|
||||||
|
|
||||||
chunk_rerank_top_k: Optional[int] = Field(
|
|
||||||
ge=1,
|
|
||||||
default=None,
|
|
||||||
description="Number of text chunks to keep after reranking.",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
max_entity_tokens: Optional[int] = Field(
|
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.",
|
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")
|
@field_validator("query", mode="after")
|
||||||
@classmethod
|
@classmethod
|
||||||
def query_strip_after(cls, query: str) -> str:
|
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{
|
.pieCircle{
|
||||||
stroke: ${t.pieStrokeColor};
|
stroke: ${t.pieStrokeColor};
|
||||||
stroke-width : ${t.pieStrokeWidth};
|
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>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||||
<meta http-equiv="Pragma" content="no-cache" />
|
<meta http-equiv="Pragma" content="no-cache" />
|
||||||
<meta http-equiv="Expires" content="0" />
|
<meta http-equiv="Expires" content="0" />
|
||||||
<link rel="icon" type="image/png" href="favicon.png" />
|
<link rel="icon" type="image/png" href="favicon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Lightrag</title>
|
<title>Lightrag</title>
|
||||||
<script type="module" crossorigin src="/webui/assets/index-BZ-Qnuxe.js"></script>
|
<script type="module" crossorigin src="/webui/assets/index-P-DdP8A0.js"></script>
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/react-vendor-DEwriMA6.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/react-vendor-CgPb4pW_.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/ui-vendor-CeCm8EER.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/ui-vendor-DaJTMqwy.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/graph-vendor-B-X5JegA.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/graph-vendor-BC3frDkq.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/utils-vendor-BysuhMZA.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/utils-vendor-elCzPYZl.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-graph-ajMjCROw.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/feature-graph-CTyfN-T7.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/mermaid-vendor-DxNSvhPA.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/mermaid-vendor-0pb-wSh1.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/markdown-vendor-mGl2lXzx.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/markdown-vendor-DZPCLF-N.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-retrieval-DVIGk-ao.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/feature-retrieval-C4OgyLZ6.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-documents--uHlw_9L.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/feature-graph-BipNuM18.css">
|
||||||
<link rel="stylesheet" crossorigin href="/webui/assets/index-DwO2XWaU.css">
|
<link rel="stylesheet" crossorigin href="/webui/assets/index-BXW7ZC7b.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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."""
|
"""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"))
|
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.
|
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"))
|
max_entity_tokens: int = int(os.getenv("MAX_ENTITY_TOKENS", "10000"))
|
||||||
"""Maximum number of tokens allocated for entity context in unified token control system."""
|
"""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.
|
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
|
@dataclass
|
||||||
class StorageNameSpace(ABC):
|
class StorageNameSpace(ABC):
|
||||||
|
|
|
||||||
|
|
@ -243,11 +243,6 @@ class LightRAG:
|
||||||
# Rerank Configuration
|
# 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)
|
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."""
|
"""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
|
# 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")
|
logger.info("Rerank model initialized for improved retrieval quality")
|
||||||
elif self.enable_rerank and not self.rerank_model_func:
|
else:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Rerank is enabled but no rerank_model_func provided. Reranking will be skipped."
|
"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
|
# Truncate entities based on complete JSON serialization
|
||||||
if entities_context:
|
if entities_context:
|
||||||
original_entity_count = len(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 = truncate_list_by_token_size(
|
||||||
entities_context,
|
entities_context,
|
||||||
key=lambda x: json.dumps(x, ensure_ascii=False),
|
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
|
# Truncate relations based on complete JSON serialization
|
||||||
if relations_context:
|
if relations_context:
|
||||||
original_relation_count = len(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 = truncate_list_by_token_size(
|
||||||
relations_context,
|
relations_context,
|
||||||
key=lambda x: json.dumps(x, ensure_ascii=False),
|
key=lambda x: json.dumps(x, ensure_ascii=False),
|
||||||
|
|
@ -3025,6 +3041,7 @@ async def apply_rerank_if_enabled(
|
||||||
query: str,
|
query: str,
|
||||||
retrieved_docs: list[dict],
|
retrieved_docs: list[dict],
|
||||||
global_config: dict,
|
global_config: dict,
|
||||||
|
enable_rerank: bool = True,
|
||||||
top_k: int = None,
|
top_k: int = None,
|
||||||
) -> list[dict]:
|
) -> list[dict]:
|
||||||
"""
|
"""
|
||||||
|
|
@ -3034,18 +3051,19 @@ async def apply_rerank_if_enabled(
|
||||||
query: The search query
|
query: The search query
|
||||||
retrieved_docs: List of retrieved documents
|
retrieved_docs: List of retrieved documents
|
||||||
global_config: Global configuration containing rerank settings
|
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
|
top_k: Number of top documents to return after reranking
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Reranked documents if rerank is enabled, otherwise original documents
|
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
|
return retrieved_docs
|
||||||
|
|
||||||
rerank_func = global_config.get("rerank_model_func")
|
rerank_func = global_config.get("rerank_model_func")
|
||||||
if not rerank_func:
|
if not rerank_func:
|
||||||
logger.debug(
|
logger.warning(
|
||||||
"Rerank is enabled but no rerank function provided, skipping rerank"
|
"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
|
return retrieved_docs
|
||||||
|
|
||||||
|
|
@ -3115,12 +3133,13 @@ async def process_chunks_unified(
|
||||||
)
|
)
|
||||||
|
|
||||||
# 2. Apply reranking if enabled and query is provided
|
# 2. Apply reranking if enabled and query is provided
|
||||||
if global_config.get("enable_rerank", False) and query and unique_chunks:
|
if query_param.enable_rerank and query and unique_chunks:
|
||||||
rerank_top_k = query_param.chunk_rerank_top_k or len(unique_chunks)
|
rerank_top_k = query_param.chunk_top_k or len(unique_chunks)
|
||||||
unique_chunks = await apply_rerank_if_enabled(
|
unique_chunks = await apply_rerank_if_enabled(
|
||||||
query=query,
|
query=query,
|
||||||
retrieved_docs=unique_chunks,
|
retrieved_docs=unique_chunks,
|
||||||
global_config=global_config,
|
global_config=global_config,
|
||||||
|
enable_rerank=query_param.enable_rerank,
|
||||||
top_k=rerank_top_k,
|
top_k=rerank_top_k,
|
||||||
)
|
)
|
||||||
logger.debug(f"Rerank: {len(unique_chunks)} chunks (source: {source_type})")
|
logger.debug(f"Rerank: {len(unique_chunks)} chunks (source: {source_type})")
|
||||||
|
|
|
||||||
|
|
@ -106,10 +106,8 @@ export type QueryRequest = {
|
||||||
stream?: boolean
|
stream?: boolean
|
||||||
/** Number of top items to retrieve. Represents entities in 'local' mode and relationships in 'global' mode. */
|
/** Number of top items to retrieve. Represents entities in 'local' mode and relationships in 'global' mode. */
|
||||||
top_k?: number
|
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
|
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. */
|
/** Maximum number of tokens allocated for entity context in unified token control system. */
|
||||||
max_entity_tokens?: number
|
max_entity_tokens?: number
|
||||||
/** Maximum number of tokens allocated for relationship context in unified token control system. */
|
/** Maximum number of tokens allocated for relationship context in unified token control system. */
|
||||||
|
|
@ -125,6 +123,8 @@ export type QueryRequest = {
|
||||||
history_turns?: number
|
history_turns?: number
|
||||||
/** User-provided prompt for the query. If provided, this will be used instead of the default value from prompt template. */
|
/** User-provided prompt for the query. If provided, this will be used instead of the default value from prompt template. */
|
||||||
user_prompt?: string
|
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 = {
|
export type QueryResponse = {
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,6 @@ export default function QuerySettings() {
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</TooltipProvider>
|
</TooltipProvider>
|
||||||
<div>
|
<div>
|
||||||
{/* Removed sr-only label */}
|
|
||||||
<Input
|
<Input
|
||||||
id="top_k"
|
id="top_k"
|
||||||
type="number"
|
type="number"
|
||||||
|
|
@ -176,144 +175,109 @@ export default function QuerySettings() {
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
||||||
{/* Chunk Rerank Top K */}
|
{/* Max Entity Tokens */}
|
||||||
<>
|
<>
|
||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<label htmlFor="chunk_rerank_top_k" className="ml-1 cursor-help">
|
<label htmlFor="max_entity_tokens" className="ml-1 cursor-help">
|
||||||
{t('retrievePanel.querySettings.chunkRerankTopK')}
|
{t('retrievePanel.querySettings.maxEntityTokens')}
|
||||||
</label>
|
</label>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
<TooltipContent side="left">
|
<TooltipContent side="left">
|
||||||
<p>{t('retrievePanel.querySettings.chunkRerankTopKTooltip')}</p>
|
<p>{t('retrievePanel.querySettings.maxEntityTokensTooltip')}</p>
|
||||||
</TooltipContent>
|
</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</TooltipProvider>
|
</TooltipProvider>
|
||||||
<div>
|
<div>
|
||||||
<Input
|
<Input
|
||||||
id="chunk_rerank_top_k"
|
id="max_entity_tokens"
|
||||||
type="number"
|
type="number"
|
||||||
value={querySettings.chunk_rerank_top_k ?? ''}
|
value={querySettings.max_entity_tokens ?? ''}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
const value = e.target.value
|
const value = e.target.value
|
||||||
handleChange('chunk_rerank_top_k', value === '' ? '' : parseInt(value) || 0)
|
handleChange('max_entity_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||||
}}
|
}}
|
||||||
onBlur={(e) => {
|
onBlur={(e) => {
|
||||||
const value = e.target.value
|
const value = e.target.value
|
||||||
if (value === '' || isNaN(parseInt(value))) {
|
if (value === '' || isNaN(parseInt(value))) {
|
||||||
handleChange('chunk_rerank_top_k', 1)
|
handleChange('max_entity_tokens', 1000)
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
min={1}
|
min={1}
|
||||||
placeholder={t('retrievePanel.querySettings.chunkRerankTopKPlaceholder')}
|
placeholder={t('retrievePanel.querySettings.maxEntityTokensPlaceholder')}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
||||||
{/* Max Tokens */}
|
{/* Max Relation Tokens */}
|
||||||
<>
|
<>
|
||||||
<>
|
<TooltipProvider>
|
||||||
<TooltipProvider>
|
<Tooltip>
|
||||||
<Tooltip>
|
<TooltipTrigger asChild>
|
||||||
<TooltipTrigger asChild>
|
<label htmlFor="max_relation_tokens" className="ml-1 cursor-help">
|
||||||
<label htmlFor="max_entity_tokens" className="ml-1 cursor-help">
|
{t('retrievePanel.querySettings.maxRelationTokens')}
|
||||||
{t('retrievePanel.querySettings.maxEntityTokens')}
|
</label>
|
||||||
</label>
|
</TooltipTrigger>
|
||||||
</TooltipTrigger>
|
<TooltipContent side="left">
|
||||||
<TooltipContent side="left">
|
<p>{t('retrievePanel.querySettings.maxRelationTokensTooltip')}</p>
|
||||||
<p>{t('retrievePanel.querySettings.maxEntityTokensTooltip')}</p>
|
</TooltipContent>
|
||||||
</TooltipContent>
|
</Tooltip>
|
||||||
</Tooltip>
|
</TooltipProvider>
|
||||||
</TooltipProvider>
|
<div>
|
||||||
<div>
|
<Input
|
||||||
<Input
|
id="max_relation_tokens"
|
||||||
id="max_entity_tokens"
|
type="number"
|
||||||
type="number"
|
value={querySettings.max_relation_tokens ?? ''}
|
||||||
value={querySettings.max_entity_tokens ?? ''}
|
onChange={(e) => {
|
||||||
onChange={(e) => {
|
const value = e.target.value
|
||||||
const value = e.target.value
|
handleChange('max_relation_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||||
handleChange('max_entity_tokens', value === '' ? '' : parseInt(value) || 0)
|
}}
|
||||||
}}
|
onBlur={(e) => {
|
||||||
onBlur={(e) => {
|
const value = e.target.value
|
||||||
const value = e.target.value
|
if (value === '' || isNaN(parseInt(value))) {
|
||||||
if (value === '' || isNaN(parseInt(value))) {
|
handleChange('max_relation_tokens', 1000)
|
||||||
handleChange('max_entity_tokens', 1)
|
}
|
||||||
}
|
}}
|
||||||
}}
|
min={1}
|
||||||
min={1}
|
placeholder={t('retrievePanel.querySettings.maxRelationTokensPlaceholder')}
|
||||||
placeholder={t('retrievePanel.querySettings.maxEntityTokens')}
|
/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
</>
|
||||||
</>
|
|
||||||
|
|
||||||
<>
|
{/* Max Total Tokens */}
|
||||||
<TooltipProvider>
|
<>
|
||||||
<Tooltip>
|
<TooltipProvider>
|
||||||
<TooltipTrigger asChild>
|
<Tooltip>
|
||||||
<label htmlFor="max_relation_tokens" className="ml-1 cursor-help">
|
<TooltipTrigger asChild>
|
||||||
{t('retrievePanel.querySettings.maxRelationTokens')}
|
<label htmlFor="max_total_tokens" className="ml-1 cursor-help">
|
||||||
</label>
|
{t('retrievePanel.querySettings.maxTotalTokens')}
|
||||||
</TooltipTrigger>
|
</label>
|
||||||
<TooltipContent side="left">
|
</TooltipTrigger>
|
||||||
<p>{t('retrievePanel.querySettings.maxRelationTokensTooltip')}</p>
|
<TooltipContent side="left">
|
||||||
</TooltipContent>
|
<p>{t('retrievePanel.querySettings.maxTotalTokensTooltip')}</p>
|
||||||
</Tooltip>
|
</TooltipContent>
|
||||||
</TooltipProvider>
|
</Tooltip>
|
||||||
<div>
|
</TooltipProvider>
|
||||||
<Input
|
<div>
|
||||||
id="max_relation_tokens"
|
<Input
|
||||||
type="number"
|
id="max_total_tokens"
|
||||||
value={querySettings.max_relation_tokens ?? ''}
|
type="number"
|
||||||
onChange={(e) => {
|
value={querySettings.max_total_tokens ?? ''}
|
||||||
const value = e.target.value
|
onChange={(e) => {
|
||||||
handleChange('max_relation_tokens', value === '' ? '' : parseInt(value) || 0)
|
const value = e.target.value
|
||||||
}}
|
handleChange('max_total_tokens', value === '' ? '' : parseInt(value) || 0)
|
||||||
onBlur={(e) => {
|
}}
|
||||||
const value = e.target.value
|
onBlur={(e) => {
|
||||||
if (value === '' || isNaN(parseInt(value))) {
|
const value = e.target.value
|
||||||
handleChange('max_relation_tokens', 1)
|
if (value === '' || isNaN(parseInt(value))) {
|
||||||
}
|
handleChange('max_total_tokens', 1000)
|
||||||
}}
|
}
|
||||||
min={1}
|
}}
|
||||||
placeholder={t('retrievePanel.querySettings.maxRelationTokens')}
|
min={1}
|
||||||
/>
|
placeholder={t('retrievePanel.querySettings.maxTotalTokensPlaceholder')}
|
||||||
</div>
|
/>
|
||||||
</>
|
</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>
|
|
||||||
</>
|
|
||||||
</>
|
</>
|
||||||
|
|
||||||
{/* History Turns */}
|
{/* History Turns */}
|
||||||
|
|
@ -331,7 +295,6 @@ export default function QuerySettings() {
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</TooltipProvider>
|
</TooltipProvider>
|
||||||
<div>
|
<div>
|
||||||
{/* Removed sr-only label */}
|
|
||||||
<Input
|
<Input
|
||||||
id="history_turns"
|
id="history_turns"
|
||||||
type="number"
|
type="number"
|
||||||
|
|
@ -442,7 +405,29 @@ export default function QuerySettings() {
|
||||||
onCheckedChange={(checked) => handleChange('stream', checked)}
|
onCheckedChange={(checked) => handleChange('stream', checked)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
</CardContent>
|
</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