Commit Graph

8472 Commits

Author SHA1 Message Date
Loong
86c520a336 fix(nlp): differentiate alphabetic OOV term weights (#18470)
### Summary

Closes #18414.

`rag/res/term.freq` is not shipped, and both term-weight implementations
therefore assigned the same `300` fallback frequency to every lowercase
Latin token. With no tokenizer frequency, NER, or POS signal, function
words and content words received identical lexical boosts.

This PR adds the same bounded out-of-vocabulary prior to Python and Go:

- Use it only when the explicit DF dictionary or tokenizer has no
frequency.
- Count Latin, Greek, and Cyrillic letters, including uppercase and
accented forms.
- Keep the existing frequency of `300` for words up to three letters,
halve it every two additional letters, and clamp it at `10`.
- Reject digits, underscores, and logographic terms so Chinese and other
existing fine-grained-tokenizer paths are unchanged.
- Treat an absent optional `term.freq` as the supported fallback path
without a startup warning, while still logging inaccessible or malformed
dictionaries.

A corpus-derived table was intentionally not added: that would require
provenance/licensing decisions, language detection, and handling
cross-language homographs. The bounded prior is deterministic,
dependency-free, and fixes the equal-weight degradation for
whitespace-delimited alphabetic languages without claiming
corpus-specific precision.

Python and Go consume one shared fixture covering ASCII, uppercase,
accented Latin, Greek, Cyrillic, separators, invalid mixed tokens, and a
CJK non-match. Both sides also verify the issue's ordering (`was <
largest < supplier < equipment`) and that an explicit dictionary entry
still takes precedence.


Co-authored-by: Loong <184861530+yzl0ng@users.noreply.github.com>
2026-08-19 18:37:04 +08:00
Loong
a6b5e985c4 fix(memory): require semantic valid_at timestamp (#18462)
## Summary

- require a `valid_at` timestamp in the semantic-memory output schema
- tell the extraction model to use conversation time when a fact has no
date of its own
- add a regression test for the assembled semantic prompt

This addresses the deterministic prompt inconsistency reported in
#18415. The invalid-timestamp fallback is intentionally left unchanged
because selecting its replacement policy requires a separate design
decision.
2026-08-19 18:32: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
Haruko386
490afa46e4 refactor: remove some unused model types (#18502)
### Summary

As title
2026-08-19 18:15:43 +08:00
Haruko386
91ddbcf60f feat[syncer]: add data source Confluence (#18501)
### Summary

As title
2026-08-19 18:15:32 +08:00
Haruko386
88a72e6a36 fix: test data source connection need connector name (#18495)
### Summary

as title
2026-08-19 18:12:18 +08:00
Haruko386
49d0d95f71 fix[syncer]: github data source don't validate repo's accessible (#18477)
### Summary

As title
2026-08-19 18:10:34 +08:00
chanx
a7f408390b fix(web): style think/retrieving blocks in floating chat widget (#18512) 2026-08-19 17:53:44 +08:00
Liu An
ec9c08d809 Docs: Update version references to v0.27.0 in READMEs and docs (#18500)
### What problem does this PR solve?

- Update version tags in README files (including translations) from
v0.26.4 to v0.27.0
- Modify Docker image references and documentation to reflect new
version
- Update version badges and image descriptions
- Maintain consistency across all language variants of README files

### Type of change

- [x] Documentation Update
v0.27.0
2026-08-19 17:06:49 +08:00
Wang Qi
1373b04f11 Docs: 0.27.0 release notes (#18493) 2026-08-19 17:04:23 +08:00
balibabu
2c6f838566 Fix: Clearing the files of the dataset selected in the chat should result in an error message appearing on the chat page. (#18510) 2026-08-19 16:55:47 +08:00
Jiang, Guomin
9e913c3fb0 Fix empty Markdown document parsing (#18503)
## Summary
- treat empty Markdown binaries as in-memory content instead of local
file paths
- add a regression test ensuring empty content does not access the
filesystem

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-19 16:33:51 +08:00
Lem0nTea2002
3791f27b38 fix(harness): enforce concurrency limits for retried Pregel tasks (#18496)
### Summary

`AsyncExecutor.Execute` acquires a worker-pool slot, while
`ExecuteWithRetry` duplicated the task lifecycle without acquiring one.
Pregel supplies a retry configuration for every node, so those
executions
bypassed `WithMaxConcurrency`.

This change:
- routes retry execution through the shared `Execute` path;
- waits on the task-owned context and rechecks cancellation after slot
acquisition;
- adds deterministic regression coverage for worker-pool occupancy and
queued-task cancellation.
2026-08-19 16:10:30 +08:00
Wangshu
e3def573d4 fix(deepdoc): collapse overlapping OCR boxes before Go table cell-fill (#18507) 2026-08-19 16:05:56 +08:00
Lynn
993e84106b Fix: not use connect check result as model verify result (#18492) 2026-08-19 15:15:04 +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
jay77721
2a1a93ed3a refactor(extractor): unify 5-in-1 modular schema across dataset and pipeline, drop legacy field_name and custom prompt (#18432)
Refactor the Extractor component into a pure, unified **5-in-1 modular extraction engine** across both Dataset (`knowledgebase.parser_config`) and Pipeline (Canvas DSL).
2026-08-19 15:02:46 +08:00
Wang Qi
38c18ea9cf Fix search with [+-] crash the search (#18497) 2026-08-19 14:39:35 +08:00
mkaaad
b46180fa2c Fix: connector validation error (#18489)
surface connector validation error detail so test connect can return
detail error
2026-08-19 14:20:18 +08:00
mkaaad
d648d19137 feat(syncer): add Bitbucket connector with checkpoint resume (#18487)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-08-19 14:20:02 +08:00
D819
c466ff3b1a fix(llm): disable DeepSeek V4 thinking by default via extra_body (#18241)
## Summary
- Disable DeepSeek V4 thinking (chain-of-thought) by default.
- litellm 1.82.x drops `thinking: disabled`; carry the toggle through
`extra_body.thinking.type` and strip `reasoning_effort` to avoid the
400.
- Use local timezone for agent `sys.date` instead of UTC.

Reference: https://api-docs.deepseek.com/guides/thinking_mode

---------

Co-authored-by: Claude <claude@example.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-19 13:47:36 +08:00
Wang Qi
5f92323ced Fix ingestion pipeline child delimiter extra newline (#18490) 2026-08-19 13:47:09 +08:00
chanx
140029e2c7 fix(web): preserve caller onBlur in NumberInput (#18491) 2026-08-19 13:24:30 +08:00
buua436
f2cfd86df4 refa: remove document graph snapshot payload (#18488) 2026-08-19 13:22:37 +08:00
balibabu
76111cb159 Fix: Deleting a large language model selected on the memory page from the model vendor should result in an error message when accessing the memory page. (#18486) 2026-08-19 13:06:00 +08:00
lawrence
2b58e62b5e test: cover stale conversation switching (#18211)
## Summary

Add focused frontend regression coverage for stale conversation messages
during chat session switching.

Related: #18140.

Replaces #18208.
2026-08-19 13:01:32 +08:00
Lem0nTea2002
9fc3e22f0f docs(harness): fix package documentation link (#18428) 2026-08-19 12:46:45 +08:00
Lem0nTea2002
5a0bcf7858 docs(harness): fix AgentCore import aliases in examples (#18434)
### Summary

Fix two Harness README examples by aliasing
`ragflow/internal/harness/core` as `agentcore`.
2026-08-19 12:45:43 +08:00
buua436
31812e1de5 feat: improve Go wiki compilation (#18479)
Improve Go Wiki compilation with chunk-level MAP caching, topic-aware planning, entity/topic page merging, and correct source chunk counting.
2026-08-19 11:41:20 +08:00
balibabu
808f216462 Fix: Retrieve the frontend code of the extractor operator for the Python version. (#18481) 2026-08-19 11:00:46 +08:00
Jack
746fe4f0b3 fix(deepdoc): align table header detection with Python (follow-up to #18404) (#18454) 2026-08-19 10:57:30 +08:00
Jack
fad48b13a1 fix(title-chunker): lossless hard-split on multibyte + re-split logging (#18476)
Fixes a character-loss regression in the TitleChunker hard-split fallback that shipped with #18455.
2026-08-19 10:55:42 +08:00
zloglevel
6c0d091cc9 fix: make ScheduledTask lifecycle concurrency-safe (#18469)
### Summary

Fixes https://github.com/infiniflow/ragflow/issues/18468

Signed-off-by: zloglevel <loglevel@outlook.com>
2026-08-19 10:50:46 +08:00
Aeovy
b27623a0c2 feat(MinerU):Add support for MinerU table and image chunk classification (#16703)
This PR fixes two issues with MinerU PDF parser where table and image chunks were not properly classified or associated:
1. **Table chunks** were incorrectly classified as `text` instead of `table`
2. **Image chunks** were missing image resource association and classified as `text`
2026-08-19 09:52:20 +08:00
Wang Qi
ae9f1e7c5b Fix reasoning not working in multiple model chat (#18457) dev-20260819 2026-08-19 09:32:05 +08:00
Jack
b6b6c4de97 fix(deepdoc): score table orientation by per-line detect+recognize (#18452) 2026-08-18 22:48:39 +08:00
Jack
b78b559ac5 Remove noocr/SkipOCR dead code path and text-layer-only parity test (#18443) 2026-08-18 22:47:31 +08:00
ming1523
6756b48f10 test: add text&code parser-to-chunker parity golden (#18311) 2026-08-18 22:45:57 +08:00
Sevenzuo
f1e6b22c4b fix: honor minimum_should_match in GaussDB search (#18456)
### Summary

GaussDB DocEngine could return no chunks for conversational queries even
when relevant content was available. `Dealer.search()` supplies
`minimum_should_match` (30%, then 10% on retry), but the GaussDB adapter
discarded it and built a single `plainto_tsquery` from every token. This
effectively required all conversational filler terms to match.
2026-08-18 21:05:49 +08:00
Jack
ebd6be09c7 feat(title-chunker): configurable token-count cap with sentence-boundary re-split (#18455)
## Summary

The TitleChunker (both `hierarchy` and `group` methods) had no
token-size ceiling, so a long section without sub-headings became one
giant chunk. This adds a configurable `chunk_token_cap` that guarantees
every text chunk stays within a token budget.
2026-08-18 21:03:51 +08:00
Harsh Kashyap
b3d9e02d03 fix(model_meta): Base._get_api_key handles JSON-dict api_key for the model-list verify path (#18386) 2026-08-18 20:16:19 +08:00
Harsh Kashyap
5d164085f5 fix(model_meta): LocalAI._get_api_key handles JSON-dict api_key for the verify path (#18314)
## Summary

Closes #17757.
2026-08-18 20:15:18 +08:00
qinling0210
2aaa6baf0c fix(agentic-rag): raise max_parallel_agents for high/ultra to 4, use web search after locate fails repeatedly (#18430)
### Summary

1. It changes the fallback semantics of the locate phase. When no chunks
are found, the system stays in locate. If the same claim has two
consecutive locate rounds with neither evidence chunks nor newly routed
document scope, web_search is admitted to the candidate tool set on the
next locate round as an external fallback.

2. It makes locate_empty_streak claim-scoped instead of shared in the
global context. This prevents one claim’s empty locate rounds from
affecting sibling claims running in parallel.

3. On the config side, it only raises max_parallel_agents for high /
ultra to 4, without changing max_agent_cycles. This increases parallel
claim execution without deepening per-claim search.
2026-08-18 19:40:07 +08:00
Wang Qi
858f882d21 Fix task time is incorrect (#18453) 2026-08-18 19:29:25 +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
Lynn
eb4e1aa2a4 Fix: set enable_thinking to True for qwen3.8-2.4t-a95b (#18442) 2026-08-18 19:27:31 +08:00
balibabu
455d34074e Fix: Initiate a request to check for file changes two seconds after compilation completes. (#18440) 2026-08-18 19:27:22 +08:00