向宁 67b030c3c5 feat: add AI chat, RAG Q&A, knowledge base, embeddings, document processing
- AI chat with SSE streaming (Microsoft Agent Framework + Qwen)
- RAG Q&A with hybrid retrieval (vector + keyword RRF fusion)
- Knowledge base CRUD with semantic text chunking
- Embedding generation via Azure.AI.OpenAI / LM Studio
- Document upload with chunked upload support
- Redis caching for chat messages
- Chunk/vector preview endpoints
- gRPC auth service improvements
- Removed demo menus, cleaned up seed data
2026-05-20 20:28:15 +08:00

19 lines
718 B
C#

using MediatR;
using RAG.Application.Embedding.DTOs;
using RAG.Domain.Interfaces;
namespace RAG.Application.Embedding.Commands;
public record EmbedBatchCommand(List<string> Texts) : IRequest<EmbeddingBatchResponse>;
public class EmbedBatchCommandHandler(IEmbeddingService embeddingService)
: IRequestHandler<EmbedBatchCommand, EmbeddingBatchResponse>
{
public async Task<EmbeddingBatchResponse> Handle(EmbedBatchCommand request, CancellationToken ct)
{
var vectors = await embeddingService.EmbedBatchAsync(request.Texts, ct);
var dimensions = vectors.FirstOrDefault()?.Length ?? 0;
return new EmbeddingBatchResponse(vectors.Select(v => v.ToList()).ToList(), dimensions);
}
}