diff --git a/Data/ProjectDataRepository.cs b/Data/ProjectDataRepository.cs index 185e2ca..936ec18 100644 --- a/Data/ProjectDataRepository.cs +++ b/Data/ProjectDataRepository.cs @@ -1,5 +1,6 @@ using ChatApi; using ChatRAG.Models; +using ChatRAG.Settings.ChatRAG.Configuration; using Microsoft.Extensions.Options; using MongoDB.Driver; @@ -10,16 +11,16 @@ namespace ChatRAG.Data private readonly IMongoCollection _textsCollection; public ProjectDataRepository( - IOptions databaseSettings) + IOptions databaseSettings) { var mongoClient = new MongoClient( - databaseSettings.Value.ConnectionString); + databaseSettings.Value.MongoDB.ConnectionString); var mongoDatabase = mongoClient.GetDatabase( - databaseSettings.Value.DatabaseName); + databaseSettings.Value.MongoDB.DatabaseName); _textsCollection = mongoDatabase.GetCollection( - databaseSettings.Value.ProjectCollectionName); + databaseSettings.Value.MongoDB.ProjectCollectionName); } public async Task> GetAsync() => diff --git a/Data/TextDataRepository.cs b/Data/TextDataRepository.cs index ebac305..edf8745 100644 --- a/Data/TextDataRepository.cs +++ b/Data/TextDataRepository.cs @@ -1,5 +1,6 @@ using ChatApi; using ChatRAG.Models; +using ChatRAG.Settings.ChatRAG.Configuration; using Microsoft.Extensions.Options; using MongoDB.Bson; using MongoDB.Driver; @@ -11,16 +12,16 @@ namespace ChatRAG.Data private readonly IMongoCollection _textsCollection; public TextDataRepository( - IOptions bookStoreDatabaseSettings) + IOptions vectorStoreDatabaseSettings) { var mongoClient = new MongoClient( - bookStoreDatabaseSettings.Value.ConnectionString); + vectorStoreDatabaseSettings.Value.MongoDB.ConnectionString); var mongoDatabase = mongoClient.GetDatabase( - bookStoreDatabaseSettings.Value.DatabaseName); + vectorStoreDatabaseSettings.Value.MongoDB.DatabaseName); _textsCollection = mongoDatabase.GetCollection( - bookStoreDatabaseSettings.Value.TextCollectionName); + vectorStoreDatabaseSettings.Value.MongoDB.TextCollectionName); } public IMongoCollection GetCollection() @@ -32,7 +33,7 @@ namespace ChatRAG.Data await _textsCollection.Find(_ => true).ToListAsync(); public async Task> 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 GetAsync(string id) => await _textsCollection.Find(x => x.Id == id).FirstOrDefaultAsync(); diff --git a/Data/UserDataRepository.cs b/Data/UserDataRepository.cs index f48011a..5427740 100644 --- a/Data/UserDataRepository.cs +++ b/Data/UserDataRepository.cs @@ -1,4 +1,5 @@ using ChatApi.Models; +using ChatRAG.Settings.ChatRAG.Configuration; using Microsoft.Extensions.Options; using MongoDB.Driver; @@ -9,16 +10,16 @@ namespace ChatApi private readonly IMongoCollection _userCollection; public UserDataRepository( - IOptions bookStoreDatabaseSettings) + IOptions vectorStoreDatabaseSettings) { var mongoClient = new MongoClient( - bookStoreDatabaseSettings.Value.ConnectionString); + vectorStoreDatabaseSettings.Value.MongoDB.ConnectionString); var mongoDatabase = mongoClient.GetDatabase( - bookStoreDatabaseSettings.Value.DatabaseName); + vectorStoreDatabaseSettings.Value.MongoDB.DatabaseName); _userCollection = mongoDatabase.GetCollection( - bookStoreDatabaseSettings.Value.UserDataName); + vectorStoreDatabaseSettings.Value.MongoDB.UserDataName); } public async Task> GetAsync() => diff --git a/DomvsDatabaseSettings.cs b/DomvsDatabaseSettings.cs deleted file mode 100644 index 16cbcc6..0000000 --- a/DomvsDatabaseSettings.cs +++ /dev/null @@ -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!; - - } -} diff --git a/Program.cs b/Program.cs index 1e60c4e..83cbca2 100644 --- a/Program.cs +++ b/Program.cs @@ -10,6 +10,7 @@ using ChatRAG.Services; using ChatRAG.Services.Contracts; using ChatRAG.Services.ResponseService; using ChatRAG.Services.SearchVectors; +using ChatRAG.Settings.ChatRAG.Configuration; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Server.Kestrel.Core; @@ -73,9 +74,6 @@ builder.Services.AddSwaggerGen(c => }); }); -builder.Services.Configure( -builder.Configuration.GetSection("DomvsDatabase")); - builder.Services.Configure( builder.Configuration.GetSection("ChatRHSettings")); @@ -105,7 +103,11 @@ builder.Services.AddSingleton(); //var apiClient = new OllamaApiClient(new Uri("http://localhost:11435"), "tinydolphin"); //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("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.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.AddOpenAIChatCompletion("gpt-4o-mini", "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"); //builder.Services.AddGoogleAIGeminiChatCompletion("gemini-1.5-flash-latest", "AIzaSyDKBMX5yW77vxJFVJVE-5VLxlQRxCepck8"); diff --git a/Services/SearchVectors/MongoVectorSearchService.cs b/Services/SearchVectors/MongoVectorSearchService.cs index 9cf588e..cefa78f 100644 --- a/Services/SearchVectors/MongoVectorSearchService.cs +++ b/Services/SearchVectors/MongoVectorSearchService.cs @@ -30,9 +30,17 @@ namespace ChatRAG.Services.SearchVectors int limit = 5, Dictionary? filters = null) { - var textos = string.IsNullOrEmpty(projectId) - ? await _textDataRepository.GetAsync() - : await _textDataRepository.GetByProjectIdAsync(projectId); + List textos = null; + try + { + 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 .Select(texto => new VectorSearchResult diff --git a/appsettings.json b/appsettings.json index 987e7d1..c3bfa6d 100644 --- a/appsettings.json +++ b/appsettings.json @@ -14,19 +14,19 @@ } }, "VectorDatabase": { - "Provider": "MongoDB", // 👈 Mude para "Qdrant" quando quiser testar + "Provider": "Qdrant", // 👈 Mude para "Qdrant" quando quiser testar "MongoDB": { - "ConnectionString": "sua_connection_string_atual", - "DatabaseName": "seu_database_atual", - "TextCollectionName": "seu_collection_atual", - "ProjectCollectionName": "seu_project_collection", - "UserDataName": "seu_user_collection" + "ConnectionString": "mongodb://admin:c4rn31r0@k3sw2:27017,k3ss1:27017/?authSource=admin", + "DatabaseName": "RAGProjects-dev-en", + "TextCollectionName": "Texts", + "ProjectCollectionName": "Groups", + "UserDataName": "UserData" }, "Qdrant": { "Host": "localhost", "Port": 6334, - "CollectionName": "documents", - "VectorSize": 1536, + "CollectionName": "texts", + "VectorSize": 384, "Distance": "Cosine", "HnswM": 16, "HnswEfConstruct": 200,