Files
CodeAnalizer/CodeBase/Program.cs

61 lines
1.7 KiB
C#

using CodeBase.Services;
using CodeBase.Warehouse;
using Qdrant.Client;
using Qdrant.Client.Grpc;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddSingleton(new QdrantClient("localhost", 6334));
builder.Services.AddSingleton<ChunkWarehouse>();
builder.Services.AddTransient<VectorizationService>();
builder.Services.AddTransient<LlmService>();
builder.Services.AddScoped<LlmPromptBuilder>();
builder.Services.AddTransient<ChunkService>();
builder.Services.AddTransient<CodeService>();
builder.Services.AddTransient<QdrantRepository>();
builder.Services.AddControllers();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
using (var scope = app.Services.CreateScope())
{
var qdrantClient = scope.ServiceProvider.GetRequiredService<QdrantClient>();
// Получаем список существующих коллекций
var collections = await qdrantClient.ListCollectionsAsync();
if (!collections.Contains("CodeBaseCollection"))
{
Console.WriteLine("Создаем новую коллекцию в Qdrant...");
await qdrantClient.CreateCollectionAsync(
collectionName: "CodeBaseCollection",
vectorsConfig: new VectorParams
{
Size = 768, // Размер вектора GraphCodeBERT
Distance = Distance.Cosine // Сразу задаем алгоритм поиска (косинусное сходство)
}
);
}
}
app.Run();