본문으로 바로 가기

WeKnora 제품 소개

WeKnora(위나라)는 Tencent가 오픈 소스로 공개한 지식 베이스 질의응답 시스템으로, PDF, Word, 웹페이지와 Feishu, Notion, Yuque 등의 플랫폼에 있는 자료를 가져올 수 있습니다. 사용자는 이 자료에 관해 질문하고, 답변의 인용을 통해 원문을 확인할 수 있습니다.

시스템은 검색 증강 생성(RAG)을 사용합니다. 먼저 문서를 파싱하고 인덱스를 구축한 다음, 질문에 따라 관련 청크를 검색하고 대규모 언어 모델로 답변을 생성합니다.

시스템은 Go 백엔드, Vue 3 프런트엔드, Python 문서 파싱 서비스 docreader로 구성되며, Docker Compose, Helm, Lite 단일 바이너리, 데스크톱 앱 등의 배포 방식을 지원합니다.

스크린샷 준비 중
WeKnora 메인 화면: 왼쪽의 지식 베이스와 대화, 오른쪽의 질의응답 영역

로그인 후 메인 화면 전체를 보여주세요. 사이드바(지식 베이스, 에이전트, 설정 메뉴)와 인용이 포함된 질의응답 한 차례를 표시해요.

website-docs/public/screenshots/introduction-overview.png
WeKnora 메인 화면: 왼쪽의 지식 베이스와 대화, 오른쪽의 질의응답 영역

활용 시나리오

요구 사항기능
다양한 문서 형식과 구조화하기 어려운 PDF/스캔본/표문서 처리 과정에서 PDF 레이아웃 분석, 스캔본 OCR, Office 변환, 웹페이지 수집, 이미지 설명을 지원하며, OpenDataLoader/Docling 하이브리드 파싱을 선택할 수 있습니다
벡터 검색만으로는 불안정한 검색 결과벡터 + 키워드(BM25) 하이브리드 검색, RRF 융합, Rerank 리랭킹을 지원하며, 지식 그래프(GraphRAG)와 Wiki 탐색을 선택할 수 있습니다
단일 공급업체에 종속된 모델모델 추상화 계층: Ollama 로컬 모델과 OpenAI 호환 원격 인터페이스 모두 사용 가능하며, LLM / Embedding / Rerank / VLM / ASR을 분류 관리합니다(internal/types/model.go 참고)
데이터 보안과 프라이빗 배포전체 스택을 프라이빗 환경에 배포할 수 있습니다. 민감한 자격 증명(API Key 등)은 AES-256으로 암호화하여 디스크에 저장합니다(SYSTEM_AES_KEY). 멀티테넌트 격리 + RBAC 역할 권한 검증을 제공합니다
다단계 작업과 도구 호출내장 Agent(ReAct 다단계 추론), MCP 도구 연결, Agent Skills 샌드박스 실행, 웹 검색(SearXNG 등), 데이터 분석(CSV/Excel에 SQL 실행)을 제공합니다
팀 협업테넌트(작업 공간) + 멤버 역할 + 조직(Organization)을 통한 테넌트 간 지식 베이스 공유 + 초대 기능

핵심 개념

지식 베이스는 자료를 정리하고, 작업 공간은 멤버와 리소스 권한을 관리하며, 에이전트는 답변에 사용할 모델과 도구를 결정합니다. 다음 용어는 화면의 옵션에 대응하며, 전체 타입 정의는 internal/types/에 있습니다.

테넌트와 신원

개념설명
테넌트 Tenant지식 베이스, 모델, 에이전트, 대화, 저장 용량 할당량을 관리하는 작업 공간입니다. 자세한 내용은 공간과 권한을 참고하세요
사용자 User로그인 계정으로, 한 사용자가 여러 작업 공간에 참여할 수 있습니다
멤버 TenantMember특정 공간에서 사용자의 멤버 관계로, 역할과 상태를 포함합니다
역할 TenantRoleOwner, Admin, Contributor, Viewer의 4단계로, 사용자가 공간에서 수행할 수 있는 작업을 결정합니다
API Key(TenantAPIKey)프로그램 접근 자격 증명으로, 특정 기능을 부여하고 지식 베이스 범위를 제한할 수 있습니다. 공간 Key와 플랫폼 Key의 권한은 별도로 관리합니다
조직 Organization여러 작업 공간을 연결하고, 조직 멤버 역할에 따라 지식 베이스와 에이전트를 공유합니다

지식 도메인

개념설명
지식 베이스 KnowledgeBase관련 자료를 정리하고 모델, 청크, 인덱스 전략을 설정합니다. 문서, FAQ, Wiki 유형을 지원합니다
지식 Knowledge지식 베이스에 있는 파일, 웹페이지 또는 직접 작성한 콘텐츠 하나로, 등록 후 파싱 상태를 확인할 수 있습니다
청크 Chunk문서 파싱 후의 검색 단위로, 텍스트, 이미지 인식 결과, 표 또는 기타 인덱스 콘텐츠를 포함할 수 있습니다
FAQ표준 질문, 유사 질문, 반례 질문과 답변을 관리하는 질의응답 항목입니다. 자세한 내용은 FAQ 기능을 참고하세요
Wiki 페이지 WikiPage문서에서 생성한 주제별 페이지로, 출처 인용과 페이지 링크를 포함하며 편집과 버전 관리를 지원합니다
지식 그래프 Entity / Relationship문서의 엔터티와 관계를 Neo4j에 저장하여 연관 콘텐츠 검색을 보완합니다
데이터 소스 DataSource외부 자료를 지속적으로 동기화하는 연결입니다. Feishu, Lark, GitLab, IMA, Notion, Yuque, RSS를 지원합니다. 자세한 내용은 데이터 소스 가져오기를 참고하세요
검색 설정 RetrievalConfig후보 수, 일치 임계값, 융합 가중치, 리랭킹 결과를 제어합니다. 자세한 내용은 검색 엔진을 참고하세요

대화와 에이전트

개념설명
세션 Session여러 차례의 질의응답과 선택한 에이전트, 모델, 지식 범위, 도구 설정을 저장합니다
메시지 Message질문 또는 답변 하나로, 이미지, 첨부 파일, 인용, 도구 실행 결과를 연결할 수 있습니다
모델 Model대화, 벡터화, 리랭킹, 시각 또는 음성 기능을 제공하는 모델 연결입니다. 자세한 내용은 모델 관리를 참고하세요
Agent(사용자 정의 에이전트) CustomAgent작업에 맞춰 모델, 자료 범위, 도구를 설정하며, 빠른 질의응답과 지능형 추론을 지원합니다
내장 Agent빠른 질의응답, 지능형 추론, 데이터 분석, Wiki 에이전트가 미리 설정되어 있습니다. 자세한 내용은 Agent 엔진을 참고하세요
스킬과 샌드박스공간의 스킬 카탈로그에 패키지를 저장하고 샌드박스 설정에 따라 설치한 뒤 에이전트에 연결하여 사용합니다. Docker/Cube/E2B, 개인 변수, 생성 파일을 지원합니다. 스킬과 샌드박스를 참고하세요
장기 기억공간과 호출자별로 자료/선호/사실/할 일/관심사를 저장합니다. 기본적으로 꺼져 있으며, 활성화와 개인 관리는 장기 기억을 참고하세요
MCP 서비스 MCPService에이전트에 외부 도구를 연결하며, SSE와 Streamable HTTP를 지원합니다. 인증은 API Key, Bearer, OAuth 2.0 중 선택할 수 있습니다

개념 관계도

기능 목록

  • 문서 연결: 파일 업로드(PDF/Word/PPT/Excel/Markdown/HTML/이미지/음성 등), URL 수집, Markdown 직접 작성, 전체 디렉터리 업로드, Feishu / Lark / Notion / Yuque / RSS 정기 동기화.
  • 문서 이해: 레이아웃 분석, 스캔본 OCR, 표 추출, 이미지 멀티모달 설명(VLM), 음성 전사(ASR), 파일 유형별 파싱 엔진 선택(ParserEngineRules, MinerU / OpenDataLoader 연결 가능).
  • 인덱스 파이프라인: 청크 설정(부모-자식 청크 및 적응형 전략 포함), 벡터 인덱스, 키워드 전문 인덱스, FAQ 인덱스, Wiki 생성, 지식 그래프 추출, 사전 질문 생성(question generation).
  • 검색: 벡터 + BM25 하이브리드 검색, RRF 융합, Rerank 리랭킹, 쿼리 재작성 및 확장, 의도 인식(greeting/chitchat/web_search 등, config/prompt_templates/intent_prompts.yaml 참고).
  • 질의응답과 Agent: SSE 스트리밍 질의응답, 다중 턴 문맥 압축, 인용 출처 추적. ReAct Agent(도구: knowledge_search, grep_chunks, wiki_search, data_analysis 등), MCP 외부 도구, Agent Skills(Docker, Cube 또는 E2B 샌드박스에서 스크립트 실행), 웹 검색.
  • 멀티테넌트와 보안: RBAC 역할 권한 검증(기본 활성화, WEKNORA_TENANT_ENABLE_RBAC), 감사 로그(기본 90일 보관), 초대 전용 가입(auth.registration_mode=invite_only, 이전 변수 DISABLE_REGISTRATION=true도 사용 가능), OIDC 통합 로그인, SSRF 방어, 민감 필드 AES-256 암호화.
  • 관측 가능성: Langfuse 전체 경로 추적(LLM/Embedding/Rerank/VLM/ASR 호출 및 토큰 통계), 상태 확인, Swagger API 문서(GIN_MODE=debug일 때).
  • 생태계: REST API(/api/v1) + API Key, 독립 MCP Server(WeKnora를 다른 Agent에 도구로 노출), CLI(cli/), WeChat 미니 프로그램(miniprogram/), 브라우저 확장 프로그램 채널.

시스템 구성 요소 개요

구성 요소기술 스택소스 위치기본 포트역할
app(백엔드)Go / Gincmd/server, internal/8080REST API, 검색 질의응답, Agent 엔진, 비동기 작업(Asynq)
frontend(프런트엔드)Vue 3 + Nginxfrontend/80웹 콘솔, Nginx가 /api를 app으로 리버스 프록시
docreaderPython / gRPCdocreader/50051(컨테이너 네트워크 내부 전용)파일을 Markdown으로 변환, 웹페이지 수집, 이미지 추출
postgresParadeDB(PostgreSQL 17 + BM25/벡터 확장)이미지 paradedb/paradedb5432주 데이터베이스 + 기본 하이브리드 검색 엔진(RETRIEVE_DRIVER=postgres)
redisRedis 76379스트림 관리(SSE 복구), Asynq 작업 큐
sandboxPython 3.12 + Node 20docker/Dockerfile.sandboxAgent Skills의 세션 샌드박스 컨테이너 이미지
선택: qdrant / milvus / weaviate / dorisdocker-compose.yml profiles6334 / 19530 / 9035 / 9030대체하거나 함께 사용하는 벡터 검색 엔진(RETRIEVE_DRIVER)
선택: opensearchdocker-compose.dev.yml에만 제공9200개발 환경용이며, 프로덕션에서는 클러스터를 직접 준비해야 합니다
선택: elasticsearch / tencent_vectordbcompose에 포함되지 않음코드에서 지원하지만 직접 배포한 후 RETRIEVE_DRIVER로 연결해야 합니다
선택: neo4jNeo4jprofile neo4j7474 / 7687지식 그래프 저장소(GraphRAG)
선택: minioMinIOprofile minio9000 / 9001S3 호환 객체 스토리지(STORAGE_TYPE=minio)
선택: searxngSearXNGprofile searxng8888자체 호스팅 웹 검색 엔진
선택: langfuse 스택Langfuse 3 + ClickHouse + MinIOprofile langfuse3000LLM 관측 가능성
선택: mcpPythonmcp-server/, profile full8082WeKnora API를 MCP Server로 래핑
선택: odl-hybridDoclingprofile odl-hybrid5002OpenDataLoader PDF 하이브리드 파싱 백엔드

다음 단계

  • 설치 및 배포: 배포 방식을 선택하고 서비스를 시작합니다.
  • 빠른 시작: 지식 베이스를 생성하고 문서를 업로드하여 첫 질의응답을 완료합니다.
  • 설정 상세 안내: 배포 매개변수와 설정 우선순위를 확인합니다.

WeKnora v0.8.0 소스 코드 기반 한국어 번역 · MIT License