Commit Graph

2011 Commits

Author SHA1 Message Date
Sevenzuo
aa49146a63 fix: preserve empty chat fields on GaussDB (#18445) 2026-08-21 16:45:10 +08:00
Jiang, Guomin
09af859357 fix(metadata): batch large document ID filters (#17394)
## Summary

- batch `DocMetadataService._search_metadata()` requests whose
`condition["id"]` list exceeds 10,000 IDs
- combine the per-batch results so metadata reads, summaries, and batch
updates avoid a single oversized Elasticsearch `terms` query
- add regression coverage for 20,001 IDs, verifying three bounded
backend searches and complete metadata results

Fixes #17393
2026-08-21 15:21:45 +08:00
Elias Shieh
f44436a549 perf(retrieval): push metadata filters down to the metadata index (#18219)
## Summary

- route REST retrieval metadata conditions through the existing
metadata-index push-down service
- keep full metadata loading lazy and preserve the Python in-memory
filter as an exact fallback
- add focused coverage for successful and empty push-down results and
multi-valued fallback semantics
2026-08-21 14:36:50 +08:00
Lynn
e2bbef0712 Fix: allow yiyan api key (#18601) 2026-08-21 13:42:28 +08:00
euvre
71188aadcd fix(file): reject folder names containing "/" in create/rename (#18586) 2026-08-21 11:00:03 +08:00
Lynn
b8b35aa9ab Fix: kimi k3 temperature (#18564) 2026-08-21 10:11:06 +08:00
Wang Qi
169822105f Fix knowledge compilation to use pipeline LLM instead of default tenant LLM (#18572) 2026-08-21 09:58:26 +08:00
Loong
c15241c3a9 fix(agent): reset execution path for new sessions (#18532) 2026-08-20 22:42:55 +08:00
rsnetworkinginc
0067470903 fix: apply order_by return value in deep-pagination helpers (unordered OFFSET/LIMIT can skip/dupe rows) (#17325)
### Summary

The fix is one line per helper — assign the `order_by(...)` result back
so the
ordering is actually applied to the query.

Co-authored-by: rsnetworkinginc <rsnetworkinginc@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-20 19:39:02 +08:00
Wang Qi
76bff4c915 Fix: switch image/ppt/email/audio from General to pipeline, or switch back, it report error (#18555) 2026-08-20 17:34:51 +08:00
Lynn
f7a2848dd5 Fix: ensure tenant_ocr_id is added (#18560) 2026-08-20 17:11:47 +08:00
Sevenzuo
1f0285ee9b fix: preserve blocking GaussDB advisory locks (#18506) 2026-08-20 16:39:43 +08:00
Christian Uhl
f806001b3f fix(db): make negative GET_LOCK timeouts work on MariaDB (#18529)
### Summary

The fix turns a negative timeout into a finite 60 second wait inside
`MysqlDatabaseLock`, which both servers accept. Callers keep expressing
"block until available", and the equivalent PostgreSQL and GaussDB work
on the same `-1` semantics (#16346, #18506) is untouched. Non-negative
timeouts keep their current behaviour.

---------

Co-authored-by: Krim <git@krim.dev>
2026-08-20 16:33:46 +08:00
Christian Uhl
89d35d1b17 fix(auth): strip trailing slash from OIDC issuer before discovery (#18530)
### Summary

OIDC discovery builds its URL as
`f"{issuer}/.well-known/openid-configuration"`. Providers whose issuer
carries a trailing slash therefore get asked for a URL with a double
slash in it, which 404s. authentik is one of them: its issuer is
`https://auth.example.com/application/o/<app>/`, so the request goes to
`.../o/<app>//.well-known/openid-configuration` and login fails right at
the start with `Failed to fetch OIDC metadata`.

Stripping trailing slashes off the issuer before joining the well-known
path is enough. The `issuer` used later for ID token validation still
comes from the discovery document itself, so nothing else about the flow
changes.

Co-authored-by: Krim <git@krim.dev>
2026-08-20 16:25:29 +08:00
primorLee
3838c626aa fix(memory): make default prompts deterministic (#18547)
### Summary

Multi-type memory prompts were assembled from sets, so their instruction
and output sections could change order across Python processes with
different hash seeds. Because the generated default prompt is persisted
and later compared as a string, a restart could make an untouched
default look custom and prevent it from being regenerated when memory
types change.
2026-08-20 16:19:27 +08:00
Loong
1e147e0c0b fix(memory): normalize invalid extraction timestamps (#18463)
## Summary

- allow ISO 8601 normalization callers to provide an explicit fallback
while preserving the existing default behavior
- use the extraction conversation time when `valid_at` is missing or
invalid
- clear an invalid optional `invalid_at` instead of writing an
unparseable value
- include the rejected timestamp value in the error log

This addresses the timestamp write-through portion of #18415. It is
intentionally separate from #18462, which fixes the semantic output
prompt.

Co-authored-by: Loong <184861530+yzl0ng@users.noreply.github.com>
2026-08-19 18:31:51 +08:00
Loong
bf9f06c566 fix(memory): honor custom extraction prompts (#18461)
### Summary

- Forward each memory's stored system_prompt and user_prompt to
extract_by_llm.
- Cover both immediate save and queued extraction paths with focused
regression tests.
- Preserve the existing default-prompt fallback when stored prompts are
empty.

Fixes #18413.
2026-08-19 18:28:36 +08:00
Sevenzuo
dd1f335ba2 fix: preserve extensionless document suffix on GaussDB (#18483)
### Summary

RAGFlow's "Create empty document" flow accepts names without a file
extension. The `POST /datasets/<dataset_id>/documents?type=empty` route
calls `_upload_empty_document()`, where `Path(name).suffix.lstrip(".")`
returns `""`.

In GaussDB's A/ORA compatibility mode, that empty string is persisted as
SQL `NULL`. Because `document.suffix` was defined as `NOT NULL`, the
insert failed with a constraint violation.
2026-08-19 18:26:14 +08:00
Ali Farhan
ece9638f94 fix(api): report why provider model discovery failed instead of swallowing it (#18027)
### Summary

Providers whose static catalogue is empty discover their models by
calling the base URL the user typed. `verify_api_key` wrapped that call
in a bare `except Exception: pass` and then returned a flat `No models
found for provider 'X'`, so an unreachable host, a closed port, a wrong
scheme and a bad TLS setup all produced the same sentence, with the
actual error discarded and not even logged.
2026-08-19 18:24:10 +08:00
js
d82c48eaf1 fix: allow .bmp uploads in filename type whitelist (#17830)
## Summary
- Frontend `Images` already includes `bmp`
(`web/src/constants/common.ts`), and picture parsing already accepts
`.bmp` (`internal/parser/parser/picture_parser.go`, `rag/app/picture.py`
via Pillow).
- This PR adds `bmp` to both whitelist sites and a small Go unit test.


Co-authored-by: zhangjiangshan1 <zhangjiangshan1@kingsoft.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:04:33 +08:00
Wang Qi
ae9f1e7c5b Fix reasoning not working in multiple model chat (#18457) 2026-08-19 09:32:05 +08:00
Wang Qi
b5ad30ed43 Fix pdf cancel at task level not document level, multiple record logs (#18435) 2026-08-18 19:29:18 +08:00
qinling0210
486065d878 Fix: use Infinity connPool.get_conn() in metadata filter push-down (#18438) 2026-08-18 17:37:28 +08:00
Wang Qi
b75509c8a6 Fix multiple model chat always use the chat model, not using the passing model (#18439) 2026-08-18 17:30:47 +08:00
peewee92
89f3611248 fix(agent): make tag metadata searchable and sortable in agent list (#18313) 2026-08-18 17:17:03 +08:00
Wang Qi
86750bd24e Fix: some pdf with chinese name cannot preview (#18422) 2026-08-18 14:54:10 +08:00
Wang Qi
75f737de67 Refactor: make page number readable (#18409) 2026-08-18 13:27:04 +08:00
zws202606
d02723ca76 feat: Gaussdb adaptation (#17703) 2026-08-18 09:53:11 +08:00
天海蒼灆
b85b908bb6 Feat: data source test connection with unified connector validation (#14992) 2026-08-18 09:36:48 +08:00
Lynn
238b1aee7d Fix: get memory size cache rightly (#18370) 2026-08-17 16:54:01 +08:00
Wang Qi
57b907cd1e Refactor: do not include compliation chunks in retrieval testing (#18364)
Retrieval Testing: do not include compilation result.
Search: include compilation result.
2026-08-17 16:19:05 +08:00
S
c6ba54bc72 fix: stop three recurring errors on doc delete (#17685) (#17686)
Follow-up to #17526 ("Refactor: merge dataset scope graph"), which introduced two code paths that touch Infinity columns the deployed schema does not declare. This PR makes the runtime robust against the old schema while also adding the new column to the new schema so freshly created tables are correct.
2026-08-16 09:25:51 +08:00
qinling0210
554fb1133a Search in navigation tree & store graph content in nav_doc (#18303)
### Summary

Search in navigation tree & store graph content in nav_doc during parse
2026-08-14 22:26:57 +08:00
buua436
024c35f085 fix: track wiki chunk changes incrementally (#18285) 2026-08-14 20:11:55 +08:00
Lynn
471070c2c8 Fix: return error when no valid speech text in intranscription response (#18277) 2026-08-14 16:27:34 +08:00
euvre
0d198fccec Fix DateTimeTzField crashing on driver-native datetimes and unparseable values (#18264) 2026-08-14 15:56:05 +08:00
buua436
15a63bc15c fix: exclude disabled documents from wiki compilation (#18261) 2026-08-14 13:45:14 +08:00
Lynn
58abab50cc Fix: reject move to current location request (#18234) 2026-08-14 09:34:20 +08:00
buua436
a4e819504c feat: support entity and topic wiki modes (#18216) 2026-08-13 19:03:24 +08:00
buua436
c10371d945 fix: refine structure graph keyword search (#18181) 2026-08-13 17:49:20 +08:00
qinling0210
a6dcc0f665 Add dataset navigation search for agentic RAG (#18218)
### Summary

Add dataset navigation search for agentic RAG.

dataset_navigation_search() calls
dataset_api_service.search_dataset_layers with mode as "nav_doc"
2026-08-13 17:35:24 +08:00
buua436
827ec11525 fix: align shared search result total (#18200) 2026-08-13 14:25:02 +08:00
Lynn
7edce6810e Fix: reduce model verify cost (#18191)
### Summary

As title.
2026-08-13 12:11:56 +08:00
euvre
b1de7e8136 Fix: allow datasets sharing a base embedding model to be searched together (#18166) 2026-08-13 09:51:44 +08:00
buua436
649b631cac fix: improve incremental wiki compilation (#18164) 2026-08-12 19:12:39 +08:00
euvre
fdb6b5fdd2 fix: search files recursively within current folder subtree (#17779) 2026-08-12 14:43:06 +08:00
euvre
a530a3a170 fix: clean up wiki blueprint default instruction text (#17893) 2026-08-12 14:39:36 +08:00
qinling0210
b73aac38f4 Update infinity json_extract_string usage (#18139)
### Summary

Update infinity json_extract_string usage. 

Example: json_extract_string(chunk_data, '$.name') LIKE '%Alice%'
2026-08-12 10:59:22 +08:00
buua436
0cfd8f41e4 fix: improve incremental wiki compilation (#18130)
### What problem does this PR solve?

Incremental Wiki compilation could lose provenance for claim-light
entities, produce unstable page groups across embedding models, route
entities to unrelated pages, and assign topics without sufficient
page-level context. Document removals and page membership changes could
also leave stale Wiki state.

This PR:

- preserves source document and chunk provenance throughout entity
matching, reduction, page generation, and deletion;
- uses embeddings to retrieve candidates and the LLM to make final page
grouping and incremental routing decisions;
- batches embedding and LLM operations with bounded concurrency and
deterministic fallbacks;
- selects source-scoped topic candidates with embeddings before the page
LLM chooses the final topic;
- rebuilds Wiki state when the compilation mode or embedding model
changes;
- normalizes Wiki array fields returned by the API and retains entities
without relations in graph responses.

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
2026-08-11 20:13:04 +08:00
qinling0210
d49af7f218 Generate navigation, navigation search (#18096)
### Summary
2 API

POST /api/v1/datasets/{dataset_id}/navigation

GET
/api/v1/datasets/{dataset_id}/navigation/search?q={query}&mode={mode}&top_k={topk}


2 cli

uv run --no-sync python3 admin/client/ragflow_cli.py -h 127.0.0.1 -p
9380 -t user

ragflow> GENERATE NAVIGATION OF DATASET 'frames tree';

ragflow> NAVIGATION SEARCH 'Christie introduced blockchain-based digital
passports' IN DATASET 'frames tree' MODE 'all' topk 20;

(mode: chunk, nav_cluster, nav_doc, navigation_tree, all)
2026-08-11 17:48:24 +08:00