-
-
Notifications
You must be signed in to change notification settings - Fork 14k
Description
Description
The knowledge base search in LobeChat currently returns only 5 results, which is insufficient for larger datasets (e.g., I need 100). I added KNOWLEDGE_SEARCH_TOP_K=100 to my .env, but it doesn’t work, and .env.example lacks this variable. I propose adding an environment variable like KNOWLEDGE_SEARCH_TOP_K (default 5, adjustable to higher values like 100) and updating .env.example and documentation.
Steps to Reproduce
- Deploy LobeChat with
docker-compose.ymland.env(attached). - Upload a file with >5 entries to the knowledge base.
- Search a query; only 5 results are returned.
Expected Behavior
- Search returns a configurable number of results (e.g., 100) via
KNOWLEDGE_SEARCH_TOP_K.
Actual Behavior
- Search remains limited to 5 results.
Environment
- OS: macOS (ARM64, MacBook Pro M1, 16 GB RAM)
- Docker: Desktop v4.x
- LobeChat: latest
Attached Files
.env
Proxy (commented out)
HTTP_PROXY=http://localhost:7890/
HTTPS_PROXY=http://localhost:7890/
OpenAI API configuration (sensitive info removed)
OPENAI_API_KEY=sk-xxx
OPENAI_PROXY_URL=https://api.openai.com/v1
OPENAI_API_BASE=https://api.openai.com/v1
DeepSeek API configuration (sensitive info removed)
DEEPSEEK_API_KEY=sk-xxx
DEEPSEEK_PROXY_URL=https://api.deepseek.com/v1
DEEPSEEK_API_BASE=https://api.deepseek.com/v1
AI_PROVIDER=auto
EMBEDDING_PROVIDER=openai
EMBEDDING_MODEL=text-embedding-3-large
KNOWLEDGE_SEARCH_TOP_K=100
NEXT_PUBLIC_SERVICE_MODE=server
LOBE_PORT=3210
CASDOOR_PORT=8000
MINIO_PORT=9000
APP_URL=http://192.168.110.59:3210/
AUTH_URL=http://192.168.110.59:3210/api/auth
Postgres configuration
LOBE_DB_NAME=lobechat
POSTGRES_PASSWORD=xxx
DATABASE_URL=postgresql://postgres:xxx@postgresql:5432/lobechat
Casdoor configuration (sensitive info removed)
AUTH_CASDOOR_ISSUER=http://192.168.110.59:8000/
AUTH_CASDOOR_ID=xxx
AUTH_CASDOOR_SECRET=xxx
MinIO configuration
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=xxx
S3_PUBLIC_DOMAIN=http://192.168.110.59:9000/
S3_ENDPOINT=http://192.168.110.59:9000/
MINIO_LOBE_BUCKET=lobe
origin=http://192.168.110.59:8000/
docker-compose.yml
name: lobe-chat-database
services:
network-service:
image: alpine
container_name: lobe-network
restart: always
ports:
"9000:9000"
"9001:9001"
"8000:8000"
"3210:3210" networks:
lobe-network
postgresql:
image: pgvector/pgvector:pg17
container_name: lobe-postgres
ports:
"5432:5432" volumes:
"./data:/var/lib/postgresql/data" environment: POSTGRES_DB: lobechat POSTGRES_PASSWORD: xxx healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 restart: always networks:
lobe-network
minio:
image: minio/minio
container_name: lobe-minio
network_mode: "service:network-service"
volumes:
"./s3_data:/etc/minio/data" environment: MINIO_API_CORS_ALLOW_ORIGIN: "*" env_file:
.env restart: always entrypoint:
/bin/sh
-c
| minio server /etc/minio/data --address ':9000' --console-address ':9001' & MINIO_PID=$! while ! curl -s http://localhost:9000/minio/health/live; do echo 'Waiting for MinIO to start...' sleep 1 done sleep 5 mc alias set myminio http://localhost:9000/ admin xxx echo 'Creating bucket lobe' mc mb myminio/lobe wait $MINIO_PID
casdoor:
image: casbin/casdoor
container_name: lobe-casdoor
network_mode: "service:network-service"
depends_on:
postgresql:
condition: service_healthy
environment:
RUNNING_IN_DOCKER: "true"
driverName: "postgres"
dataSourceName: "user=postgres password=xxx host=postgresql port=5432 sslmode=disable dbname=casdoor"
runmode: "dev"
volumes:
./init_data.json:/init_data.json env_file:
.env entrypoint:
/bin/sh
-c
"./server --createDatabase=true"
lobe:
image: lobehub/lobe-chat-database
container_name: lobe-chat
networks:
lobe-network depends_on: postgresql: condition: service_healthy minio: condition: service_started casdoor: condition: service_started env_file:
.env restart: always
volumes:
data:
driver: local
s3_data:
driver: local
networks:
lobe-network:
driver: bridge