feat: 知识库朴素语义搜索(输入→检索→结果列表)
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
"""
|
||||
知识库 API — 上传 / 列表 / 删除 / 来源筛选
|
||||
知识库 API — 上传 / 列表 / 删除 / 来源筛选 / 语义搜索
|
||||
"""
|
||||
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, Query, status
|
||||
from sqlmodel import Session
|
||||
@@ -104,3 +105,28 @@ def get_grouped_knowledge_items(
|
||||
"""
|
||||
svc = KnowledgeService()
|
||||
return svc.get_grouped_items()
|
||||
|
||||
|
||||
class SearchRequest(BaseModel):
|
||||
query: str
|
||||
top_k: int = 5
|
||||
|
||||
|
||||
@router.post("/search")
|
||||
def search_knowledge(
|
||||
body: SearchRequest,
|
||||
session: Session = Depends(get_session),
|
||||
current_user: User = Depends(require_role(UserRole.zhipianren, UserRole.zebian, UserRole.biandao)),
|
||||
):
|
||||
"""
|
||||
语义检索:输入一段文字,返回最相关的知识库条目及相似度。
|
||||
查询向量用 type="query"(区分于存入时的 type="db")。
|
||||
三角色均可读。
|
||||
"""
|
||||
svc = KnowledgeService()
|
||||
results = svc.search_similar(query_text=body.query, top_k=body.top_k)
|
||||
return {
|
||||
"results": results,
|
||||
"query": body.query,
|
||||
"count": len(results),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user