fix: unificar settings

This commit is contained in:
Ricardo Carneiro 2025-06-15 23:03:45 -03:00
parent 9a1d75aaf8
commit caf50d9d7f
7 changed files with 48 additions and 45 deletions

View File

@ -1,5 +1,6 @@
using ChatApi; using ChatApi;
using ChatRAG.Models; using ChatRAG.Models;
using ChatRAG.Settings.ChatRAG.Configuration;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using MongoDB.Driver; using MongoDB.Driver;
@ -10,16 +11,16 @@ namespace ChatRAG.Data
private readonly IMongoCollection<Project> _textsCollection; private readonly IMongoCollection<Project> _textsCollection;
public ProjectDataRepository( public ProjectDataRepository(
IOptions<DomvsDatabaseSettings> databaseSettings) IOptions<VectorDatabaseSettings> databaseSettings)
{ {
var mongoClient = new MongoClient( var mongoClient = new MongoClient(
databaseSettings.Value.ConnectionString); databaseSettings.Value.MongoDB.ConnectionString);
var mongoDatabase = mongoClient.GetDatabase( var mongoDatabase = mongoClient.GetDatabase(
databaseSettings.Value.DatabaseName); databaseSettings.Value.MongoDB.DatabaseName);
_textsCollection = mongoDatabase.GetCollection<Project>( _textsCollection = mongoDatabase.GetCollection<Project>(
databaseSettings.Value.ProjectCollectionName); databaseSettings.Value.MongoDB.ProjectCollectionName);
} }
public async Task<List<Project>> GetAsync() => public async Task<List<Project>> GetAsync() =>

View File

@ -1,5 +1,6 @@
using ChatApi; using ChatApi;
using ChatRAG.Models; using ChatRAG.Models;
using ChatRAG.Settings.ChatRAG.Configuration;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using MongoDB.Bson; using MongoDB.Bson;
using MongoDB.Driver; using MongoDB.Driver;
@ -11,16 +12,16 @@ namespace ChatRAG.Data
private readonly IMongoCollection<TextoComEmbedding> _textsCollection; private readonly IMongoCollection<TextoComEmbedding> _textsCollection;
public TextDataRepository( public TextDataRepository(
IOptions<DomvsDatabaseSettings> bookStoreDatabaseSettings) IOptions<VectorDatabaseSettings> vectorStoreDatabaseSettings)
{ {
var mongoClient = new MongoClient( var mongoClient = new MongoClient(
bookStoreDatabaseSettings.Value.ConnectionString); vectorStoreDatabaseSettings.Value.MongoDB.ConnectionString);
var mongoDatabase = mongoClient.GetDatabase( var mongoDatabase = mongoClient.GetDatabase(
bookStoreDatabaseSettings.Value.DatabaseName); vectorStoreDatabaseSettings.Value.MongoDB.DatabaseName);
_textsCollection = mongoDatabase.GetCollection<TextoComEmbedding>( _textsCollection = mongoDatabase.GetCollection<TextoComEmbedding>(
bookStoreDatabaseSettings.Value.TextCollectionName); vectorStoreDatabaseSettings.Value.MongoDB.TextCollectionName);
} }
public IMongoCollection<TextoComEmbedding> GetCollection() public IMongoCollection<TextoComEmbedding> GetCollection()
@ -32,7 +33,7 @@ namespace ChatRAG.Data
await _textsCollection.Find(_ => true).ToListAsync(); await _textsCollection.Find(_ => true).ToListAsync();
public async Task<List<TextoComEmbedding>> GetByProjectIdAsync(string projectId) => public async Task<List<TextoComEmbedding>> GetByProjectIdAsync(string projectId) =>
await _textsCollection.Find(s => s.ProjetoId == ObjectId.Parse(projectId).ToString()).ToListAsync(); await _textsCollection.Find(s => s.ProjetoId == projectId).ToListAsync();
public async Task<TextoComEmbedding?> GetAsync(string id) => public async Task<TextoComEmbedding?> GetAsync(string id) =>
await _textsCollection.Find(x => x.Id == id).FirstOrDefaultAsync(); await _textsCollection.Find(x => x.Id == id).FirstOrDefaultAsync();

View File

@ -1,4 +1,5 @@
using ChatApi.Models; using ChatApi.Models;
using ChatRAG.Settings.ChatRAG.Configuration;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using MongoDB.Driver; using MongoDB.Driver;
@ -9,16 +10,16 @@ namespace ChatApi
private readonly IMongoCollection<UserData> _userCollection; private readonly IMongoCollection<UserData> _userCollection;
public UserDataRepository( public UserDataRepository(
IOptions<DomvsDatabaseSettings> bookStoreDatabaseSettings) IOptions<VectorDatabaseSettings> vectorStoreDatabaseSettings)
{ {
var mongoClient = new MongoClient( var mongoClient = new MongoClient(
bookStoreDatabaseSettings.Value.ConnectionString); vectorStoreDatabaseSettings.Value.MongoDB.ConnectionString);
var mongoDatabase = mongoClient.GetDatabase( var mongoDatabase = mongoClient.GetDatabase(
bookStoreDatabaseSettings.Value.DatabaseName); vectorStoreDatabaseSettings.Value.MongoDB.DatabaseName);
_userCollection = mongoDatabase.GetCollection<UserData>( _userCollection = mongoDatabase.GetCollection<UserData>(
bookStoreDatabaseSettings.Value.UserDataName); vectorStoreDatabaseSettings.Value.MongoDB.UserDataName);
} }
public async Task<List<UserData>> GetAsync() => public async Task<List<UserData>> GetAsync() =>

View File

@ -1,16 +0,0 @@
namespace ChatApi
{
public class DomvsDatabaseSettings
{
public string ConnectionString { get; set; } = null!;
public string DatabaseName { get; set; } = null!;
public string TextCollectionName { get; set; } = null!;
public string UserDataName { get; set; } = null!;
public string ProjectCollectionName { get; set; } = null!;
}
}

View File

@ -10,6 +10,7 @@ using ChatRAG.Services;
using ChatRAG.Services.Contracts; using ChatRAG.Services.Contracts;
using ChatRAG.Services.ResponseService; using ChatRAG.Services.ResponseService;
using ChatRAG.Services.SearchVectors; using ChatRAG.Services.SearchVectors;
using ChatRAG.Settings.ChatRAG.Configuration;
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.AspNetCore.Server.Kestrel.Core;
@ -73,9 +74,6 @@ builder.Services.AddSwaggerGen(c =>
}); });
}); });
builder.Services.Configure<DomvsDatabaseSettings>(
builder.Configuration.GetSection("DomvsDatabase"));
builder.Services.Configure<ChatRHSettings>( builder.Services.Configure<ChatRHSettings>(
builder.Configuration.GetSection("ChatRHSettings")); builder.Configuration.GetSection("ChatRHSettings"));
@ -105,7 +103,11 @@ builder.Services.AddSingleton<CryptUtil>();
//var apiClient = new OllamaApiClient(new Uri("http://localhost:11435"), "tinydolphin"); //var apiClient = new OllamaApiClient(new Uri("http://localhost:11435"), "tinydolphin");
//Olllama //Olllama
builder.Services.AddOllamaChatCompletion("llama3.2", new Uri("http://localhost:11434")); //Desktop
//builder.Services.AddOllamaChatCompletion("llama3.2", new Uri("http://localhost:11434"));
//Notebook
builder.Services.AddOllamaChatCompletion("llama3.2:3b", new Uri("http://localhost:11435"));
//builder.Services.AddOllamaChatCompletion("tinydolphin", new Uri("http://localhost:11435")); //builder.Services.AddOllamaChatCompletion("tinydolphin", new Uri("http://localhost:11435"));
//builder.Services.AddOllamaChatCompletion("tinyllama", new Uri("http://localhost:11435")); //builder.Services.AddOllamaChatCompletion("tinyllama", new Uri("http://localhost:11435"));
@ -118,7 +120,13 @@ builder.Services.AddOllamaChatCompletion("llama3.2", new Uri("http://localhost:1
//builder.Services.AddOllamaChatCompletion("llama3.1:latest", new Uri("http://192.168.0.150:11434")); //builder.Services.AddOllamaChatCompletion("llama3.1:latest", new Uri("http://192.168.0.150:11434"));
//builder.Services.AddOllamaTextEmbeddingGeneration("all-minilm", new Uri("http://192.168.0.150:11434")); //builder.Services.AddOllamaTextEmbeddingGeneration("all-minilm", new Uri("http://192.168.0.150:11434"));
builder.Services.AddOllamaTextEmbeddingGeneration("all-minilm", new Uri("http://localhost:11434"));
//Desktop
//builder.Services.AddOllamaTextEmbeddingGeneration("all-minilm", new Uri("http://localhost:11434"));
//Notebook
builder.Services.AddOllamaTextEmbeddingGeneration("all-minilm", new Uri("http://localhost:11435"));
//builder.Services.AddOllamaChatCompletion("phi3.5", new Uri("http://localhost:11435")); //builder.Services.AddOllamaChatCompletion("phi3.5", new Uri("http://localhost:11435"));
//builder.Services.AddOpenAIChatCompletion("gpt-4o-mini", "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"); //builder.Services.AddOpenAIChatCompletion("gpt-4o-mini", "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");
//builder.Services.AddGoogleAIGeminiChatCompletion("gemini-1.5-flash-latest", "AIzaSyDKBMX5yW77vxJFVJVE-5VLxlQRxCepck8"); //builder.Services.AddGoogleAIGeminiChatCompletion("gemini-1.5-flash-latest", "AIzaSyDKBMX5yW77vxJFVJVE-5VLxlQRxCepck8");

View File

@ -30,9 +30,17 @@ namespace ChatRAG.Services.SearchVectors
int limit = 5, int limit = 5,
Dictionary<string, object>? filters = null) Dictionary<string, object>? filters = null)
{ {
var textos = string.IsNullOrEmpty(projectId) List<TextoComEmbedding> textos = null;
? await _textDataRepository.GetAsync() try
: await _textDataRepository.GetByProjectIdAsync(projectId); {
textos = string.IsNullOrEmpty(projectId)
? await _textDataRepository.GetAsync()
: await _textDataRepository.GetByProjectIdAsync(projectId);
}
catch (Exception ex)
{
throw new Exception($"Erro ao buscar documentos: {ex.Message}");
}
var resultados = textos var resultados = textos
.Select(texto => new VectorSearchResult .Select(texto => new VectorSearchResult

View File

@ -14,19 +14,19 @@
} }
}, },
"VectorDatabase": { "VectorDatabase": {
"Provider": "MongoDB", // 👈 Mude para "Qdrant" quando quiser testar "Provider": "Qdrant", // 👈 Mude para "Qdrant" quando quiser testar
"MongoDB": { "MongoDB": {
"ConnectionString": "sua_connection_string_atual", "ConnectionString": "mongodb://admin:c4rn31r0@k3sw2:27017,k3ss1:27017/?authSource=admin",
"DatabaseName": "seu_database_atual", "DatabaseName": "RAGProjects-dev-en",
"TextCollectionName": "seu_collection_atual", "TextCollectionName": "Texts",
"ProjectCollectionName": "seu_project_collection", "ProjectCollectionName": "Groups",
"UserDataName": "seu_user_collection" "UserDataName": "UserData"
}, },
"Qdrant": { "Qdrant": {
"Host": "localhost", "Host": "localhost",
"Port": 6334, "Port": 6334,
"CollectionName": "documents", "CollectionName": "texts",
"VectorSize": 1536, "VectorSize": 384,
"Distance": "Cosine", "Distance": "Cosine",
"HnswM": 16, "HnswM": 16,
"HnswEfConstruct": 200, "HnswEfConstruct": 200,