1
0

Реализована операции Milvus для управления документами и встраиванием, включая функции вставки, запроса и удаления. Внедрите архитектуру RAG с LLM и сервисами встраивания. Добавьте обработку текста для фрагментации и конкатенации. Создайте автономный скрипт для настройки и управления Milvus. Разработайте комплексные тесты API для обработки документов и взаимодействия с LLM, включая имитации для сервисов. Расширьте возможности конфигурации пользователя с помощью дополнительных настроек YAML.

This commit is contained in:
Dmitriy Fofanov
2025-09-19 11:38:31 +03:00
parent 8e7aab5181
commit 636096fd34
38 changed files with 3420 additions and 28 deletions

89
tests/mock_test.go Normal file
View File

@@ -0,0 +1,89 @@
package api_test
import (
"easy_rag/internal/models"
"github.com/stretchr/testify/mock"
)
// --------------------
// Mock LLM
// --------------------
type MockLLMService struct {
mock.Mock
}
func (m *MockLLMService) Generate(prompt string) (string, error) {
args := m.Called(prompt)
return args.String(0), args.Error(1)
}
func (m *MockLLMService) GetModel() string {
args := m.Called()
return args.String(0)
}
// --------------------
// Mock Embeddings
// --------------------
type MockEmbeddingsService struct {
mock.Mock
}
func (m *MockEmbeddingsService) Vectorize(text string) ([][]float32, error) {
args := m.Called(text)
return args.Get(0).([][]float32), args.Error(1)
}
func (m *MockEmbeddingsService) GetModel() string {
args := m.Called()
return args.String(0)
}
// --------------------
// Mock Database
// --------------------
type MockDatabase struct {
mock.Mock
}
// GetDocumentInfo(id string) (models.DocumentInfo, error)
func (m *MockDatabase) GetDocumentInfo(id string) (models.Document, error) {
args := m.Called(id)
return args.Get(0).(models.Document), args.Error(1)
}
// SaveDocument(document Document) error
func (m *MockDatabase) SaveDocument(doc models.Document) error {
args := m.Called(doc)
return args.Error(0)
}
// SaveEmbeddings([]Embedding) error
func (m *MockDatabase) SaveEmbeddings(emb []models.Embedding) error {
args := m.Called(emb)
return args.Error(0)
}
// ListDocuments() ([]Document, error)
func (m *MockDatabase) ListDocuments() ([]models.Document, error) {
args := m.Called()
return args.Get(0).([]models.Document), args.Error(1)
}
// GetDocument(id string) (Document, error)
func (m *MockDatabase) GetDocument(id string) (models.Document, error) {
args := m.Called(id)
return args.Get(0).(models.Document), args.Error(1)
}
// DeleteDocument(id string) error
func (m *MockDatabase) DeleteDocument(id string) error {
args := m.Called(id)
return args.Error(0)
}
// Search(vector []float32) ([]models.Embedding, error)
func (m *MockDatabase) Search(vector [][]float32) ([]models.Embedding, error) {
args := m.Called(vector)
return args.Get(0).([]models.Embedding), args.Error(1)
}