package dto import ( "rag/consts/document" "gitea.redpowerfuture.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "github.com/pgvector/pgvector-go" ) // RAGQueryReq RAG查询请求 type RAGQueryReq struct { g.Meta `path:"/ragQuery" method:"post" tags:"RAG查询" summary:"执行RAG查询" dc:"执行RAG查询"` Content string `json:"content" v:"required#查询内容不能为空" dc:"用户问题"` DatasetIds []int64 `json:"datasetIds" dc:"数据集ID"` DocumentIds []int64 `json:"documentIds" dc:"文档ID"` History []*Message `json:"history" dc:"历史对话"` TopK int `json:"topK" d:"5" dc:"检索topK,默认5"` } type Message struct { Role string `json:"role"` Content string `json:"content"` } // RAGQueryRes RAG查询响应 type RAGQueryRes struct { Answer string `json:"answer" dc:"生成的答案"` } // UpdateDocumentVectorReq 更新文件块向量请求 type UpdateDocumentVectorReq struct { g.Meta `path:"/update" method:"put" tags:"文件块向量管理" summary:"更新文件块" dc:"更新文件块"` Id int64 `json:"id" v:"required#ID不能为空"` Status document.Status `json:"status"` } type DeleteDocumentVectorReq struct { g.Meta `path:"/delete" method:"put" tags:"文件块向量管理" summary:"删除文件块" dc:"删除文件块"` Id int64 `json:"id"` DocumentId int64 `json:"documentId"` } // ListDocumentVectorReq 文件块向量列表请求 type ListDocumentVectorReq struct { g.Meta `path:"/list" method:"get" tags:"文件块向量管理" summary:"获取文件块向量列表" dc:"分页查询文件块向量列表,支持多条件筛选"` Page *beans.Page `json:"page"` Keyword string `json:"keyword" dc:"关键词搜索"` DatasetId int64 `json:"datasetId"` DocumentId int64 `json:"documentId"` DocumentIds []int64 `json:"documentIds"` ContentHashs []string `json:"contentHash"` Status document.Status `json:"status"` VectorStatus document.VectorStatus `json:"vectorStatus"` } // ListDocumentVectorRes 文件块向量列表响应 type ListDocumentVectorRes struct { List []*DocumentVectorVO `json:"list"` Total int `json:"total"` } type DocumentVectorVO struct { Id int64 `json:"id,string" dc:"id"` Status document.Status `json:"status" dc:"状态"` VectorStatus document.VectorStatus `json:"vectorStatus" dc:"向量状态"` DatasetId int64 `json:"datasetId,string" dc:"所属数据集ID"` DocumentId int64 `json:"documentId,string" dc:"所属文档ID"` Content string `json:"content" dc:"内容"` ContentHash string `json:"contentHash" dc:"内容hash"` ChunkIndex int64 `json:"chunkIndex" dc:"块索引"` Vector []float64 `json:"vector" dc:"向量"` Metadata map[string]interface{} `json:"metadata" dc:"元信息"` CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"` UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间"` } type VectorDocumentVectorMsg struct { TenantId uint64 `json:"tenantId"` Creator string `json:"creator"` DatasetId int64 `json:"datasetId"` // 数据集ID DocumentId int64 `json:"documentId"` // 所属文档ID Content string `json:"content"` // 原始内容 ContentHash string `json:"contentHash"` // 原始内容hash ChunkIndex int64 `json:"chunkIndex"` // 第几块 Status document.Status `json:"status"` VectorStatus document.VectorStatus `json:"vectorStatus"` Vector pgvector.Vector `json:"vector"` Metadata map[string]interface{} `json:"metadata"` }