33 lines
1.0 KiB
C#
33 lines
1.0 KiB
C#
using CodeBase.Models;
|
|
using CodeBase.Repositories;
|
|
|
|
namespace CodeBase.Services
|
|
{
|
|
public class CodeService(ScipRepository repository,
|
|
VectorizationService vectorizationService,
|
|
LlmService llmService)
|
|
{
|
|
public async Task<string> GetAnswerAsync(string name, string question)
|
|
{
|
|
var query = await vectorizationService.GetVectorAsync(question);
|
|
|
|
var answerVectors = await SearchAsync(query, name, 15);
|
|
|
|
var answer = await llmService.AskQuestionAsync(question, answerVectors);
|
|
|
|
return answer;
|
|
}
|
|
|
|
// Главный метод поиска
|
|
public async Task<List<RetrievedContext>> SearchAsync(
|
|
float[] queryVector,
|
|
string name,
|
|
int topK = 3) // Возвращаем топ-3 результата
|
|
{
|
|
var results = await repository.FindSimilarNodesAsync(queryVector, name, topK);
|
|
|
|
return results;
|
|
}
|
|
}
|
|
}
|