Commit graph

349 commits

Author SHA1 Message Date
Ray
f21c90fa2b Update README: Connect with Us buttons and header tagline
- Add Website and Book a Demo buttons; reorder and recolor to brand palette
- Replace removed/invalid shields logos (LinkedIn, envelope) and the Website
  icon with inline white SVGs so all badges show an icon
- Reword header tagline (No Vector DB, No Chunking; Context-Aware Retrieval; Human-like)
- Rename top-nav Homepage -> Website
2026-06-01 19:19:53 +08:00
Ray
dd064dc39a
Update README (#307) 2026-05-30 18:51:40 +08:00
Ray
aad68cac7d
Update README (#305) 2026-05-30 18:38:11 +08:00
mountain
f354eb17bf docs: drop Environment variables and Runnable examples subsections from README 2026-05-15 18:10:47 +08:00
mountain
9ad8304389 chore: move legacy SDK e2e script into examples/
scripts/e2e_legacy_sdk.py becomes examples/demo_legacy_sdk.py to sit
alongside the other runnable demos (local/cloud/query-modes), and the
README's Runnable examples list now points at it. Docstring command
updated to the new path; the legacy script docstring also calls out
that it exercises the 0.2.x compatibility methods.

The scripts/ directory had no other entries and is removed.
2026-05-15 18:08:29 +08:00
mountain
a47c36a3f5 feat(collection): doc_ids accepts str|list, design cleanups
- Collection.query and Backend.query/query_stream accept doc_ids as
  str, list[str] or None. Single str is normalized to [str] inside each
  backend; bare [] is rejected with ValueError at both layers.
- wrap_with_doc_context wraps the scoped doc list in <docs>...</docs>
  and SCOPED_SYSTEM_PROMPT instructs the agent to treat that block as
  data, not instructions (defense against prompt injection via
  auto-generated doc_description).
- _require_cloud_api now distinguishes api_key="" from api_key=None;
  the former gives a targeted error pointing at the empty-string vs
  fall-back-to-local situation when legacy SDK methods are called.
- Legacy PageIndexClient.list_documents docstring spells out the
  return-shape difference vs collection.list_documents() to flag a
  silent migration footgun (paginated dict with id/name keys vs plain
  list[dict] with doc_id/doc_name keys).
- Remove dead CloudBackend.get_agent_tools stub (not on the Backend
  protocol; only ever returned an empty AgentTools()) and the
  SYSTEM_PROMPT alias (OPEN_/SCOPED_SYSTEM_PROMPT are the explicit
  names now).
- README quick start and streaming example now pass doc_ids; new
  multi-document section shows both str and list forms.
- examples/demo_query_modes.py exercises all five query-mode cases
  (single-doc, multi-doc with/without env var, scoped single, scoped
  multi) for manual verification.
2026-05-15 17:03:17 +08:00
mountain
d7b36aaf3f feat(collection): scoped query mode and experimental multi-doc warning
- get_agent_tools branches on doc_ids:
  - scoped (doc_ids=[...]): drops list_documents and hard-enforces a
    whitelist on the remaining tools; system prompt switches to
    SCOPED_SYSTEM_PROMPT (no list_documents instruction); doc list +
    summaries are prepended to the user message via wrap_with_doc_context.
  - open (doc_ids=None): unchanged 4-tool agent loop.
- list_documents now exposes doc_description (sqlite + cloud).
- Collection.query emits UserWarning when doc_ids is None and the
  collection holds >1 documents; PAGEINDEX_EXPERIMENTAL_MULTIDOC=1
  silences it. Single-doc collections skip the warning; empty
  collections raise ValueError.
- Agents SDK tracing upload disabled by default (avoids SSL timeouts);
  PAGEINDEX_AGENTS_TRACING=1 re-enables it.
- README: new SDK Usage section covering local/cloud quick start,
  streaming, multi-doc as experimental, and runnable examples.
2026-05-15 11:14:12 +08:00
mountain
cbea31d1a2 chore: remove unused ext local in PDF image block handling
Filename is always built as `.png` regardless of the source ext, so the
variable was dead. Flagged by github-code-quality.
2026-05-12 14:38:41 +08:00
mountain
3595956f7c chore(deps): declare pydantic as a direct dependency
pageindex/config.py imports `from pydantic import BaseModel` in production
code, but pyproject.toml only pulled pydantic in transitively via litellm.
A future litellm release could drop or re-pin pydantic and break installs.

Pin to `>=2.5.0,<3.0.0` to match the v2-style BaseModel usage already in the
codebase, and to stay compatible with litellm's own pydantic constraint.
2026-05-12 14:32:17 +08:00
Ray
7592163e2a
Update README (#271)
Some checks failed
CodeQL / Analyze (actions) (push) Has been cancelled
2026-05-12 03:28:29 +08:00
Xinyan Zhou
595895cf28
feat:compatible with Pageindex SDK (#238)
* feat:compatible with Pageindex SDK

* corner cases fixed

* fix: mock behavior of old SDK

* fix: close streaming response and warn on empty api_key

- LegacyCloudAPI: close response in `finally` for both _stream_chat_response
  variants so abandoned iterators no longer leak the TCP connection.
- PageIndexClient: emit a warning instead of silently falling back to local
  when api_key is the empty string, surfacing typical env-var-unset misconfig.
- FakeResponse: add close()/closed to match the real requests.Response API.
- Add unit coverage for stream close (both paths) and the empty-api_key warning.
- Add scripts/e2e_legacy_sdk.py to smoke-test the legacy SDK contract end-to-end
  against api.pageindex.ai.

* chore: mark legacy SDK methods with @deprecated and docstring pointers

- Decorate the 12 PageIndexClient cloud-SDK compat methods with
  @typing_extensions.deprecated(..., category=PendingDeprecationWarning):
  - IDE/type-checkers render them with a strikethrough hint
  - runtime warnings stay silent by default (no spam for existing callers),
    surfaceable via `python -W default::PendingDeprecationWarning`
- Add a one-line docstring on each pointing to the Collection-based equivalent.
- Promote typing-extensions to a direct dependency (was transitive via litellm).

---------

Co-authored-by: XinyanZhou <xinyanzhou@XinyanZhoudeMacBook-Pro.local>
Co-authored-by: saccharin98 <xinyanzhou938@gmail.com>
Co-authored-by: mountain <kose2livs@gmail.com>
2026-05-11 21:06:23 +08:00
Ray
f50e529753
update README (#262)
Some checks failed
CodeQL / Analyze (actions) (push) Has been cancelled
2026-05-08 02:08:33 +08:00
Ray
c1a0f94fd3
update README (#261) 2026-05-08 01:57:33 +08:00
Ray
e7dfc5e1ff
update README (#259) 2026-05-07 20:57:14 +08:00
Ray
dcda5656ba Fix Agentic RAG entry formatting in Updates
Some checks failed
CodeQL / Analyze (actions) (push) Has been cancelled
2026-05-06 04:53:41 +08:00
Ray
495e8929b5 Trim Cloud Service note in README 2026-05-06 04:40:32 +08:00
Ray
46244aed33 update README
Some checks are pending
CodeQL / Analyze (actions) (push) Waiting to run
2026-05-06 00:57:25 +08:00
Bukely_
a51d97f63c
Add security CI workflows (#248)
Some checks failed
CodeQL / Analyze (actions) (push) Has been cancelled
* Add security CI workflows

* Remove duplicate Python CodeQL workflow
2026-04-25 00:46:01 +08:00
dependabot[bot]
40073375ff
Bump the pip group across 1 directory with 2 updates (#247)
Bumps the pip group with 2 updates in the / directory: [litellm](https://github.com/BerriAI/litellm) and [python-dotenv](https://github.com/theskumar/python-dotenv).


Updates `litellm` from 1.83.0 to 1.83.7
- [Release notes](https://github.com/BerriAI/litellm/releases)
- [Commits](https://github.com/BerriAI/litellm/commits)

Updates `python-dotenv` from 1.1.0 to 1.2.2
- [Release notes](https://github.com/theskumar/python-dotenv/releases)
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md)
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.2.2)

---
updated-dependencies:
- dependency-name: litellm
  dependency-version: 1.83.7
  dependency-type: direct:production
  dependency-group: pip
- dependency-name: python-dotenv
  dependency-version: 1.2.2
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 00:19:47 +08:00
Bukely_
29b240a689
Add Dependabot config for GitHub Actions updates (#241)
Weekly scan to open PRs upgrading third-party actions used in CI.
pip dependencies remain pinned and are covered by Dependabot security
updates separately.
2026-04-23 23:59:26 +08:00
Ray
6d29886892 chore: bump version to 0.3.0.dev1 2026-04-11 01:18:22 +08:00
Ray
edb203102a
fix: poll status=="completed" in cloud add_document (#226)
The cloud backend previously polled tree_resp["retrieval_ready"]
as the ready signal. Empirically this flag is not a reliable
indicator — docs can reach status=="completed" without
retrieval_ready flipping, causing col.add() to wait until the 10
min timeout before giving up on otherwise-successful uploads.

The cloud API's canonical ready signal is status=="completed";
switch the poll to check that instead.
2026-04-11 01:16:48 +08:00
Ray
f5de9c9dbb Add dist/ to .gitignore 2026-04-08 20:57:22 +08:00
Ray
27e671eefd Update pyproject.toml: switch to poetry and bump to 0.3.0.dev0 2026-04-08 20:45:49 +08:00
Kylin
c7fe93bb56 feat: add PageIndex SDK with local/cloud dual-mode support (#207) 2026-04-08 20:21:58 +08:00
Xinyan Zhou
f2dcffc0b7
Merge pull request #214 from VectifyAI/dependabot/pip/pip-480c85e8a1
Bump litellm from 1.82.0 to 1.83.0 in the pip group across 1 directory
2026-04-08 18:19:25 +08:00
dependabot[bot]
eb57d2a10c
Bump litellm from 1.82.0 to 1.83.0 in the pip group across 1 directory
Bumps the pip group with 1 update in the / directory: [litellm](https://github.com/BerriAI/litellm).


Updates `litellm` from 1.82.0 to 1.83.0
- [Release notes](https://github.com/BerriAI/litellm/releases)
- [Commits](https://github.com/BerriAI/litellm/commits)

---
updated-dependencies:
- dependency-name: litellm
  dependency-version: 1.83.0
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 22:16:59 +00:00
Ray
8f1ed7783b Update README 2026-03-30 01:34:45 +08:00
Ray
0ba6206ef0 Update developer links 2026-03-29 20:01:58 +08:00
Ray
28542de889 Polish agent system prompt wording 2026-03-29 05:31:02 +08:00
Ray
54542f03e6
Merge pull request #197 from VectifyAI/polish/demo-docstring-and-pathlib
Polish demo docstring and migrate to pathlib
2026-03-29 05:03:50 +08:00
Ray
ce9cbc2ed0 Polish demo docstring and migrate to pathlib 2026-03-29 04:56:27 +08:00
Ray
a108c021ae
Disable agent tracing and auto-add litellm/ prefix for retrieve_model
* Disable agent tracing and auto-add litellm/ prefix for retrieve_model

* Preserve supported retrieve_model prefixes

* Remove temporary retrieve_model tests

* Limit tracing disablement to demo execution
2026-03-29 00:55:57 +08:00
Ray
d50c293309
Simplify agentic vectorless RAG demo (#191)
* Simplify and fix agentic RAG demo

* Show labeled reasoning output in RAG demo

* Comment out reasoning model settings by default
2026-03-28 09:42:46 +08:00
Ray
4002dc94de Rename demo script and update README wording 2026-03-28 04:56:05 +08:00
Ray
77722838e1
Restructure examples directory and improve document storage (#189)
* Consolidate tests/ into examples/documents/

* Add line_count and reorder structure keys

* Lazy-load documents with _meta.json index

* Update demo script and add pre-shipped workspace

* Extract shared helpers for JSON reading and meta entry building
2026-03-28 04:28:59 +08:00
Ray
74e549a23a
Merge pull request #184 from VectifyAI/cleanup/simplify-root-directory
Simplify root directory
2026-03-27 16:33:24 +08:00
Ray
a7a9985223 Update README 2026-03-27 03:55:07 +08:00
Ray
e5ac754828 Simplify root directory 2026-03-27 03:30:13 +08:00
Ray
d7d5aed668 Update README 2026-03-27 03:21:20 +08:00
Ray
88ef448d1a Add agentic vectorless RAG example to README highlights 2026-03-27 02:31:40 +08:00
Ray
9798aaae19 Update demo example paper and polish README 2026-03-27 01:22:03 +08:00
Kylin
5d4491f3bf
Add PageIndexClient with agent-based retrieval via OpenAI Agents SDK (#125)
* Add PageIndexClient with retrieve, streaming support and litellm integration
* Add OpenAI agents demo example
* Update README with example agent demo section
* Support separate retrieve_model configuration for index and retrieve
2026-03-26 23:19:50 +08:00
Kylin
2403be8f27
Integrate LiteLLM for multi-provider LLM support (#168)
* Integrate litellm for multi-provider LLM support

* recover the default config yaml

* Use litellm.acompletion for native async support

* fix tob

* Rename llm_complete/allm_complete to llm_completion/llm_acompletion, remove unused llm_complete_stream

* Pin litellm to version 1.82.0

* resolve comments

* args from cli is used to overrides config.yaml

* Fix get_page_tokens hardcoded model default

Pass opt.model to get_page_tokens so tokenization respects the
configured model instead of always using gpt-4o-2024-11-20.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Remove explicit openai dependency from requirements.txt

openai is no longer directly imported; it comes in as a transitive
dependency of litellm. Pinning it explicitly risks version conflicts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Restore openai==1.101.0 pin in requirements.txt

litellm==1.82.0 and openai-agents have conflicting openai version
requirements, but openai==1.101.0 works at runtime for both.
The pin is necessary to prevent litellm from pulling in openai>=2.x
which would break openai-agents.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Remove explicit openai dependency from requirements.txt

openai is not directly used; it comes in as a transitive dependency
of litellm. No openai-agents in this branch so no pin needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix an litellm error log

* resolve comments

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 18:47:07 +08:00
Bukely_
4b4b20f9c4
Merge pull request #167 from VectifyAI/fix/list-index-shadowing
Fix list_index variable shadowing in fix_incorrect_toc
2026-03-16 14:20:32 +08:00
BukeLy
85f17f9955 Fix list_index variable shadowing in fix_incorrect_toc
The loop variable `list_index = page_index - start_index` was
overwriting the outer `list_index = incorrect_item['list_index']`,
causing results to be written back to wrong index positions.

Rename the loop variable to `page_list_idx` to avoid shadowing.

Closes #66
2026-03-16 14:19:51 +08:00
Bukely_
599d2ce497
Merge pull request #65 from luojiyin1987/fix/extract-toc-infinite-loop
fix: prevent infinite loop in extract_toc_content
2026-03-16 13:34:05 +08:00
Bukely_
b487f9d7c7
Merge pull request #63 from luojiyin1987/fix/api-error-return
fix: make ChatGPT_API_with_finish_reason return consistent tuple
2026-03-16 13:24:54 +08:00
Bukely_
959452d3cb
Merge pull request #142 from VectifyAI/fix/allow-all-users-dedupe
Allow all users to trigger issue dedup
2026-03-04 10:52:53 +08:00
BukeLy
8d36e1d4b6 Allow all users to trigger issue dedup via claude-code-action
Issues are opened by external users who don't have write permissions.
Add allowed_non_write_users: "*" so claude-code-action runs for all
issue authors, not just repo collaborators.
2026-03-04 10:51:15 +08:00