# WeKnora RAG Search

Queries a WeKnora knowledge base with chat, ask or chunk search via the CLI.

- Repository: https://github.com/Tencent/WeKnora (36180 stars)
- Category: Data and ML
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add Tencent/WeKnora --skill weknora-rag-search -g -a claude-code -y`
Codex: `npx skills add Tencent/WeKnora --skill weknora-rag-search -g -a codex -y`
Cursor: `npx skills add Tencent/WeKnora --skill weknora-rag-search -g -a cursor -y`
Gemini CLI: `npx skills add Tencent/WeKnora --skill weknora-rag-search -g -a gemini-cli -y`

## Description

Use when retrieving from or asking questions against a WeKnora knowledge base via the `weknora` CLI, and especially when unsure whether to use `chat`, `session ask`, or `search chunks` for a given goal.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# WeKnora, retrieval & RAG queries

**REQUIRED BACKGROUND:** read the `weknora-shared` skill first (auth, `--kb`
resolution, the JSON envelope, exit codes, streaming/NDJSON output).

WeKnora gives you several ways to "ask about a knowledge base." Picking the wrong
one wastes turns or returns the wrong shape. Use the decision table.

## Pick the command by your goal

| Your goal | Command | LLM synthesis? | Returns |
|---|---|---|---|
| Natural-language **answer** grounded in a KB | `chat "<q>" --kb <kb>` | yes | bounded answer events; `--reference` adds citations; `--verbose` adds execution detail |
| Answer via a **custom agent** (its own KB scope, tools, web search) | `session ask --agent <id> "<q>"` | yes (+ tools) | bounded answer events; `--reference` adds citations; `--verbose` adds execution detail |
| **Raw context chunks** to reason over yourself (no answer) | `search chunks "<q>" --kb <kb>` | no | ranked chunk list |
| Which **documents** match a keyword (title/filename) | `search docs "<q>" --kb <kb>` | no | document list |
| Find a **knowledge base** by name | `search kb "<q>"` | no | KB list |
| Find a past **session** by title | `search sessions "<q>"` | no | session list |

### The three decisions that matter

1. **Answer vs raw context.** Want a written answer → `chat` / `session ask`.
   Want chunks to feed into your *own* reasoning (e.g. you'll synthesize across
   sources) → `search chunks`. Don't call `chat` just to read source text.
2. **`chat` vs `session ask`.** `chat` = plain KB RAG Q&A. `session ask --agent
   <id>` = invoke a *configured custom agent* (it may scope its own KBs, call
   tools, do web search). If the user set up an agent for this, prefer it
   (`weknora agent list` to find ids); otherwise `chat`.
3. **One-shot vs multi-turn.** Both `chat` and `session ask` return a
   `data.session_id` in default JSON output. Pass `--session <id>` on the next
   call to continue the conversation. In NDJSON mode, read it from `init`.

The rest: https://github.com/Tencent/WeKnora/blob/HEAD/cli/skills/weknora-rag-search/SKILL.md
