README_KO.md
</a>
</a>
<a href="https://chatbot.weixin.qq.com" target="_blank">
</a>
<a href="https://chromewebstore.google.com/detail/jpemjbopikggjlmikmclgbmkhhopjdgd" target="_blank">
</a>
<a href="https://clawhub.ai/lyingbug/weknora" target="_blank">
</a>
<a href="https://github.com/Tencent/WeKnora/blob/main/LICENSE">
</a>
<a href="./CHANGELOG.md">
</a>
๊ฐ์ โข ์ํคํ ์ฒ โข ํต์ฌ ๊ธฐ๋ฅ โข ์์ํ๊ธฐ โข API ๋ ํผ๋ฐ์ค โข ๊ฐ๋ฐ์ ๊ฐ์ด๋
</h4> </p>WeKnora๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ๋ฌธ์ ์ดํด, ์๋งจํฑ ๊ฒ์, ์์จ ์ถ๋ก ์๋๋ฆฌ์ค๋ฅผ ์ํด ์ค๊ณ๋ ์คํ์์ค LLM ๊ธฐ๋ฐ ์ง์ ํ๋ ์์ํฌ์ ๋๋ค.
๋ณธ ํ๋ ์์ํฌ๋ ์ธ ๊ฐ์ง ํต์ฌ ์ญ๋์ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ผ์ ๊ฒ์์ ์ต์ ํ๋ RAG ๊ธฐ๋ฐ ๋น ๋ฅธ Q&A, ์ง์ ๊ฒ์ยทMCP ๋๊ตฌยท์น ๊ฒ์์ ์์จ์ ์ผ๋ก ์ค์ผ์คํธ๋ ์ด์ ํ์ฌ ๋ณต์กํ ๋ค๋จ๊ณ ์์ ์ ์ฒ๋ฆฌํ๋ ReAct Agent ์ถ๋ก , ๊ทธ๋ฆฌ๊ณ Agent๊ฐ ์๋ณธ ๋ฌธ์์์ ์ํธ ์ฐ๊ฒฐ๋ ๋งํฌ๋ค์ด ์ง์๋ฒ ์ด์ค์ ์ธํฐ๋ํฐ๋ธ ์ง์ ๊ทธ๋ํ๋ฅผ ์ค์ค๋ก ์์ฑยท์ ์งํ๋ ์์ ํ ์๋ก์ด Wiki ๋ชจ๋์ ๋๋ค. ๋ค์ํ ๋ฐ์ดํฐ ์์ค ์ฐ๋(Feishu / Notion / Yuque, ์ง์ ํ์ฅ ์ค), 20๊ฐ ์ด์์ LLM ํ๋ก๋ฐ์ด๋ ํตํฉ, Langfuse ๊ธฐ๋ฐ ํ์คํ ๊ด์ธก ๊ฐ๋ฅ์ฑ, ์ํฐํ๋ผ์ด์ฆ ๋ฉํฐ ํ ๋ํธ RBAC(4๋จ๊ณ ์ญํ ๋งคํธ๋ฆญ์ค + ๋ฆฌ์์ค ์์ ๊ถ + ํ ๋ํธ ๊ฐ์ฌ ๋ก๊ทธ), ์์ ์ ํํธ์คํ ์ด ๊ฐ๋ฅํ ๋ชจ๋ํ ์ํคํ ์ฒ๋ฅผ ๊ฒฐํฉํ์ฌ, WeKnora๋ ํฉ์ด์ง ๋ฌธ์๋ฅผ ๊ฒ์ยท์ถ๋ก ๊ฐ๋ฅํ๋ฉฐ ์ง์์ ์ผ๋ก ์งํํ๋ ์ ์ฉ ์ง์ ์์ฐ์ผ๋ก ํ๋ฐ๊ฟ์ํต๋๋ค.
Feishu, Notion, Yuque ๋ฑ ์ธ๋ถ ํ๋ซํผ์์ ์ง์ ์๋ ๋๊ธฐํ๋ฅผ ์ง์ํ๋ฉฐ(์ถ๊ฐ ๋ฐ์ดํฐ ์์ค ๊ฐ๋ฐ ์ค), PDF, Word, ์ด๋ฏธ์ง, Excel ๋ฑ 10๊ฐ์ง ์ด์์ ๋ฌธ์ ํฌ๋งท์ ์ฒ๋ฆฌํฉ๋๋ค. WeChat Work, Feishu, Slack, Telegram ๋ฑ์ IM ์ฑ๋์ ํตํด Q&A ์๋น์ค๋ฅผ ์ง์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ชจ๋ธ ๋ ์ด์ด์์ OpenAI, DeepSeek, Qwen(Alibaba Cloud), Zhipu, Hunyuan, Gemini, MiniMax, NVIDIA, Ollama ๋ฑ ์ฃผ์ ํ๋ก๋ฐ์ด๋๋ฅผ ์ง์ํฉ๋๋ค. ์ ์ฒด ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ํ ์ค๊ณ๋์ด LLM, ๋ฒกํฐ DB, ์คํ ๋ฆฌ์ง ๋ฑ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ฐํ๊ฒ ๊ต์ฒด ๊ฐ๋ฅํ๋ฉฐ, ๋ก์ปฌ ๋ฐ ํ๋ผ์ด๋น ํด๋ผ์ฐ๋ ๋ฐฐํฌ๋ฅผ ์ง์ํ์ฌ ๋ฐ์ดํฐ ์์ ์์ฒด ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋ํ WeKnora๋ Langfuse์ ์ํํ๊ฒ ํตํฉ๋์ด Agent ์ถ๋ก , ํ ํฐ ์ฌ์ฉ๋ ๋ฐ ํ์ดํ๋ผ์ธ์ ๋ํ ํฌ๊ด์ ์ธ ๊ด์ธก ๊ฐ๋ฅ์ฑ(Observability)์ ์ ๊ณตํฉ๋๋ค.
Owner / Admin / Contributor / Viewer + KB ๋จ์ ์์ + ํ
๋ํธ๋ณ ๊ฐ์ฌ ๋ก๊ทธ), ํ
๋ํธ ๋ฉค๋ฒ ๊ด๋ฆฌ์ ๋ฉํฐ ์ํฌ์คํ์ด์ค UX, ์
ํ ์๋น์ค ์ํฌ์คํ์ด์ค ์์ฑ; weknora CLI v0.4 GA + mcp serve; ์ฌ๋ฌ ๋ฒกํฐ ์ ์ฅ์์ ๊ฑธ์น KB ๊ฒ์ ํฌ์์; MCP / ๋ฐ์ดํฐ ์์ค ์๊ฒฉ ์ฆ๋ช
AES-256-GCM ์ํธํ + docreader gRPC TLS + Token; Zhipu ์๋ฒ ๋์ ํ์จ์ด ํด๋ผ์ฐ๋ OBS ์ถ๊ฐ; ์๋ฒ ์ฌ์ด๋ ์ฌ์ฉ์ ํ๊ฒฝ์ค์ ; Go 1.26.0. ์์ธํ ๋ด์ฉ์ docs/RBAC่ฏดๆ.md๊ณผ CHANGELOG.md ์ฐธ๊ณ .weknora CLI ํ๋ฆฌ๋ทฐ.final_answer ๋๊ตฌ.๋ฌธ์ ํ์ฑ, ๋ฒกํฐํ, ๊ฒ์๋ถํฐ LLM ์ถ๋ก ๊น์ง ์ ์ฒด ํ์ดํ๋ผ์ธ์ ๋ชจ๋ํํ์ฌ ๊ฐ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ฐํ๊ฒ ๊ต์ฒดยทํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. ๋ก์ปฌ / ํ๋ผ์ด๋น ํด๋ผ์ฐ๋ ๋ฐฐํฌ๋ฅผ ์ง์ํ๋ฉฐ, ๋ฐ์ดํฐ ์์ ์์ฒด ๊ด๋ฆฌ์ ์ง์ ์ฅ๋ฒฝ ์๋ Web UI๋ก ๋น ๋ฅด๊ฒ ์์ํ ์ ์์ต๋๋ค.
| ์๋๋ฆฌ์ค | ์ ์ฉ ์ฌ๋ก | ํต์ฌ ๊ฐ์น |
|---|---|---|
| ๊ธฐ์ ์ง์ ๊ด๋ฆฌ | ๋ด๋ถ ๋ฌธ์ ๊ฒ์, ๊ท์ Q&A, ์ด์ ๋งค๋ด์ผ ์กฐํ | ์ง์ ํ์ ํจ์จ ํฅ์, ๊ต์ก ๋น์ฉ ์ ๊ฐ |
| ํ์ ์ฐ๊ตฌ ๋ถ์ | ๋ ผ๋ฌธ ๊ฒ์, ์ฐ๊ตฌ ๋ฆฌํฌํธ ๋ถ์, ํ์ ์๋ฃ ์ ๋ฆฌ | ๋ฌธํ ์กฐ์ฌ ๊ฐ์, ์ฐ๊ตฌ ์์ฌ๊ฒฐ์ ์ง์ |
| ์ ํ ๊ธฐ์ ์ง์ | ์ ํ ๋งค๋ด์ผ Q&A, ๊ธฐ์ ๋ฌธ์ ๊ฒ์, ํธ๋ฌ๋ธ์ํ | ๊ณ ๊ฐ ์ง์ ํ์ง ํฅ์, ์ง์ ๋ถ๋ด ๊ฐ์ |
| ๋ฒ๋ฌด/์ปดํ๋ผ์ด์ธ์ค ๊ฒํ | ๊ณ์ฝ ์กฐํญ ๊ฒ์, ๊ท์ ์ ์ฑ ์กฐํ, ์ฌ๋ก ๋ถ์ | ์ปดํ๋ผ์ด์ธ์ค ํจ์จ ํฅ์, ๋ฒ์ ๋ฆฌ์คํฌ ๊ฐ์ |
| ์๋ฃ ์ง์ ์ง์ | ์ํ ๋ฌธํ ๊ฒ์, ์ง๋ฃ ๊ฐ์ด๋๋ผ์ธ ์กฐํ, ์ฆ๋ก ๋ถ์ | ์์ ์์ฌ๊ฒฐ์ ์ง์, ์ง๋จ ํ์ง ํฅ์ |
์ง๋ฅํ ๋ํ
| ๊ธฐ๋ฅ | ์์ธ |
|---|---|
| ์ง๋ฅํ ์ถ๋ก | ReACT ์ ์ง์ ๋ฉํฐ์คํ ์ถ๋ก , ์ง์ ๊ฒ์ยทMCP ๋๊ตฌยท์น ๊ฒ์์ ์์จ ์ค์ผ์คํธ๋ ์ด์ , ์ปค์คํ ์์ด์ ํธ ์ง์ |
| ๋น ๋ฅธ Q&A | ์ง์๋ฒ ์ด์ค ๊ธฐ๋ฐ RAG Q&A, ๋น ๋ฅด๊ณ ์ ํํ ๋ต๋ณ |
| Wiki ๋ชจ๋ | Agent๊ฐ ์ฃผ๋ํ์ฌ ์๋ณธ ๋ฌธ์์์ ๊ตฌ์กฐํ๋ ๋งํฌ๋ค์ด Wiki ํ์ด์ง๋ฅผ ์๋ ์์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ |
| ๋๊ตฌ ํธ์ถ | ๋ด์ฅ ๋๊ตฌ, MCP ๋๊ตฌ, ์น ๊ฒ์ |
| ๋ํ ์ ๋ต | ์จ๋ผ์ธ ํ๋กฌํํธ ํธ์ง, ๊ฒ์ ์๊ณ๊ฐ ์กฐ์ , ๋ฉํฐํด ๋ฌธ๋งฅ ์ธ์ |
| ์ถ์ฒ ์ง๋ฌธ | ์ง์๋ฒ ์ด์ค ์ฝํ ์ธ ๊ธฐ๋ฐ ์ง๋ฌธ ์๋ ์์ฑ |
์ง์ ๊ด๋ฆฌ
| ๊ธฐ๋ฅ | ์์ธ |
|---|---|
| ์ง์๋ฒ ์ด์ค ํ์ | FAQ / ๋ฌธ์ / Wiki, ํด๋ ์ํฌํธยทURL ์ํฌํธยทํ๊ทธ ๊ด๋ฆฌยท์จ๋ผ์ธ ์ ๋ ฅ |
| ๋ฐ์ดํฐ ์์ค ์ํฌํธ | Feishu / Notion / Yuque ์ง์๋ฒ ์ด์ค ์๋ ๋๊ธฐํ(์ถ๊ฐ ๋ฐ์ดํฐ ์์ค ๊ฐ๋ฐ ์ค), ์ฆ๋ถยท์ ์ฒด ๋๊ธฐํ ์ง์ |
| ๋ฌธ์ ํฌ๋งท | PDF / Word / Txt / Markdown / HTML / ์ด๋ฏธ์ง / CSV / Excel / PPT / JSON |
| ๊ฒ์ ์ ๋ต | BM25 ํฌ์ / Dense ๋ฐ์ง / GraphRAG ๊ทธ๋ํ ๊ฐํ / ๋ถ๋ชจ-์์ ์ฒญํน / ๋ค์ฐจ์ ์ธ๋ฑ์ฑ |
| E2E ํ ์คํธ | ์ ์ฒด ํ์ดํ๋ผ์ธ ์๊ฐํ, ๋ฆฌ์ฝ ์ ์ค๋ฅ ยทBLEU / ROUGE ์งํ ํ๊ฐ |
์ฐ๋ ๋ฐ ํ์ฅ
| ๊ธฐ๋ฅ | ์์ธ |
|---|---|
| LLM | OpenAI / Azure OpenAI / Anthropic (Claude) / DeepSeek / Qwen (Alibaba Cloud) / Zhipu / Hunyuan / Doubao (Volcengine) / Gemini / MiniMax / NVIDIA / Novita AI / SiliconFlow / OpenRouter / Ollama |
| Embedding | Ollama / BGE / GTE / OpenAI ํธํ API |
| ๋ฒกํฐ DB | PostgreSQL (pgvector) / Elasticsearch / Milvus / Weaviate / Qdrant / Apache Doris / Tencent VectorDB |
| ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง | ๋ก์ปฌ / MinIO / AWS S3 / Volcengine TOS / Alibaba Cloud OSS / Kingsoft Cloud KS3 |
| IM ํตํฉ | WeChat Work / Feishu / Slack / Telegram / DingTalk / Mattermost / WeChat |
| ์น ๊ฒ์ | DuckDuckGo / Bing / Google / Tavily / Baidu / Ollama / SearXNG |
ํ๋ซํผ
| ๊ธฐ๋ฅ | ์์ธ |
|---|---|
| ๋ฐฐํฌ | ๋ก์ปฌ / Docker / Kubernetes (Helm), ํ๋ผ์ด๋น/์คํ๋ผ์ธ ๋ฐฐํฌ ์ง์ |
| UI | Web UI / RESTful API / CLI (weknora) / Chrome Extension / WeChat ๋ฏธ๋ ํ๋ก๊ทธ๋จ |
| ๊ด์ธก ๊ฐ๋ฅ์ฑ | ReAct ๋ฃจํ, ํ ํฐ ์๋น, ๋๊ตฌ ํธ์ถ, ํ์ดํ๋ผ์ธ ์ถ์ ์ ์ํ Langfuse ํตํฉ |
| ์์ ๊ด๋ฆฌ | MQ ๋น๋๊ธฐ ์์ , ๋ฒ์ ์ ๊ทธ๋ ์ด๋ ์ ์๋ DB ๋ง์ด๊ทธ๋ ์ด์ |
| ๋ชจ๋ธ ๊ด๋ฆฌ | ์ค์ ์ค์ , ์ง์๋ฒ ์ด์ค๋ณ ๋ชจ๋ธ ์ ํ, ๋ฉํฐํ ๋ํธ ๋ด์ฅ ๋ชจ๋ธ ๊ณต์ , WeKnora Cloud ํธ์คํ ๋ชจ๋ธ ๋ฐ ๋ฌธ์ ํ์ฑ |
WeKnora Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์น ์ฝํ ์ธ ๋ฅผ WeKnora ์ง์๋ฒ ์ด์ค์ ์ง์ ์บก์ฒํ ์ ์์ต๋๋ค. ํ ์คํธ, ์ด๋ฏธ์ง ๋๋ ์ ์ฒด ํ์ด์ง๋ฅผ ์ ํํ๊ณ ์ํด๋ฆญ์ผ๋ก ์ง์ ํญ๋ชฉ์ผ๋ก ์ ์ฅ โ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ ํ์ผ ์ ๋ก๋ ๋ถํ์.
WeKnora ClawHub Skill์ ClawHub ํ๋ซํผ์ ๊ฒ์๋ WeKnora ์คํฌ์ ๋๋ค. ์ค์น ํ WeKnora REST API๋ฅผ ํตํด ๋ฌธ์ ์ ๋ก๋(ํ์ผ / URL / Markdown), ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์(๋ฒกํฐ + ํค์๋), ์ง์ ํญ๋ชฉ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
git clone https://github.com/Tencent/WeKnora.git
cd WeKnora
cp .env.example .env # ํ์์ ๋ฐ๋ผ .env ํธ์ง (ํ์ผ ๋ด ์ฃผ์ ์ฐธ๊ณ )
docker compose up -d # ์ฝ์ด ์๋น์ค ์์
์์ ํ http://localhost ์ ์ ์ํ์ฌ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
๋ก์ปฌ Ollama ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์
ollama serve > /dev/null 2>&1 &๋ฅผ ์คํํ์ธ์.
--profile ํ๋๊ทธ๋ก ์ถ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ํ์ฑํํฉ๋๋ค. ์ฌ๋ฌ profile ์กฐํฉ ๊ฐ๋ฅ:
| Profile | ์ค๋ช | ๋ช ๋ น์ด |
|---|---|---|
| (๊ธฐ๋ณธ) | ์ฝ์ด ์๋น์ค | docker compose up -d |
full | ์ ์ฒด ๊ธฐ๋ฅ | docker compose --profile full up -d |
neo4j | ์ง์ ๊ทธ๋ํ (Neo4j) | docker compose --profile neo4j up -d |
minio | ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง (MinIO) | docker compose --profile minio up -d |
langfuse | ํธ๋ ์ด์ฑ (Langfuse) | docker compose --profile langfuse up -d |
์กฐํฉ ์์: docker compose --profile neo4j --profile minio up -d
์๋น์ค ์ค์ง: docker compose down
| ์๋น์ค | URL |
|---|---|
| Web UI | http://localhost |
| ๋ฐฑ์๋ API | http://localhost:8080 |
| Langfuse ํธ๋ ์ด์ฑ | http://localhost:3000 |
WeKnora๋ ๋ฌธ์๋ฅผ ์ง์ ๊ทธ๋ํ๋ก ๋ณํํด ๋ฌธ์ ๋ด ์๋ก ๋ค๋ฅธ ์น์ ๊ฐ ๊ด๊ณ๋ฅผ ์๊ฐํํ ์ ์์ต๋๋ค. ์ง์ ๊ทธ๋ํ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ฉด ๋ฌธ์ ๋ด๋ถ์ ์๋งจํฑ ์ฐ๊ด ๋คํธ์ํฌ๋ฅผ ๋ถ์/๊ตฌ์ฑํ์ฌ ๋ฌธ์ ์ดํด๋ฅผ ๋๊ณ , ์ธ๋ฑ์ฑ๊ณผ ๊ฒ์์ ๊ตฌ์กฐํ๋ ์ง์์ ์ ๊ณตํด ๊ฒ์ ๊ฒฐ๊ณผ์ ๊ด๋ จ์ฑ๊ณผ ํญ์ ํฅ์์ํต๋๋ค.
์์ธํ ์ค์ ์ ์ง์ ๊ทธ๋ํ ์ค์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํ์ํ ์ค์ ์ MCP ์ค์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
WeKnora๋ WeChat ๋ํ ์คํ ํ๋ซํผ์ ํต์ฌ ๊ธฐ์ ํ๋ ์์ํฌ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋ณด๋ค ๊ฐํธํ ์ฌ์ฉ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค:
๋ฌธ์ ํด๊ฒฐ FAQ: ๋ฌธ์ ํด๊ฒฐ FAQ
์์ธ API ๋ฌธ์: API Docs
์ ํ ๊ณํ ๋ฐ ์์ ๊ธฐ๋ฅ: Roadmap
์ฝ๋๋ฅผ ์์ฃผ ์์ ํด์ผ ํ๋ค๋ฉด ๋งค๋ฒ Docker ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํ ํ์๊ฐ ์์ต๋๋ค. ๊ณ ์ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ธ์.
# ์ธํ๋ผ ์์
make dev-start
# ๋ฐฑ์๋ ์์ (์ ํฐ๋ฏธ๋)
make dev-app
# ํ๋ก ํธ์๋ ์์ (์ ํฐ๋ฏธ๋)
make dev-frontend
๊ฐ๋ฐ ์ฅ์ :
์์ธ ๋ฌธ์: ๊ฐ๋ฐ ํ๊ฒฝ ๋น ๋ฅธ ์์
Issue ๋๋ Pull Request๋ฅผ ํ์ํฉ๋๋ค.
์ ์ฐจ: Fork โ ๋ธ๋์น ์์ฑ โ ๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐ โ PR ์์ฑ
๊ท์น: gofmt๋ก ์ฝ๋ ํฌ๋งทํ
, Conventional Commits ์ค์ (feat: / fix: / docs: / test: / refactor:)
์ค์: v0.1.3๋ถํฐ WeKnora๋ ์์คํ ๋ณด์ ๊ฐํ๋ฅผ ์ํด ๋ก๊ทธ์ธ ์ธ์ฆ ๊ธฐ๋ฅ์ ํฌํจํฉ๋๋ค. ์ด์ ํ๊ฒฝ ๋ฐฐํฌ ์ ์๋ ์ฌํญ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
๋ฉ์ง ๊ธฐ์ฌ์ ์ฌ๋ฌ๋ถ๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค:
์ด ํ๋ก์ ํธ๋ MIT License๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ์ ์ ํ ์ ์๊ถ ๊ณ ์ง๋ฅผ ์ ์งํ๋ ์กฐ๊ฑด์ผ๋ก ์ฝ๋๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉ, ์์ , ๋ฐฐํฌํ ์ ์์ต๋๋ค.