Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1a8985b29 | ||
|
|
9073c52b5c |
+31
-34
@@ -1,5 +1,6 @@
|
|||||||
val wiremockVersion = "3.12.0"
|
val wiremockVersion = "3.12.0"
|
||||||
val postgresqlVersion = "42.7.11"
|
val postgresqlVersion = "42.7.11"
|
||||||
|
val springAiVersion by extra("2.0.0")
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
@@ -37,45 +38,41 @@ repositories {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
extra["springAiVersion"] = "2.0.0"
|
|
||||||
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-session-jdbc")
|
|
||||||
// implementation("org.springframework.boot:spring-boot-starter-security")
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-validation")
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-webmvc")
|
|
||||||
implementation("org.springframework.ai:spring-ai-starter-model-openai")
|
|
||||||
implementation("org.postgresql:postgresql:$postgresqlVersion")
|
|
||||||
implementation("org.springframework.ai:spring-ai-starter-vector-store-pgvector")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
compileOnly("org.projectlombok:lombok")
|
|
||||||
|
|
||||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
|
||||||
|
|
||||||
runtimeOnly("org.postgresql:postgresql")
|
|
||||||
|
|
||||||
annotationProcessor("org.projectlombok:lombok")
|
|
||||||
|
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
|
|
||||||
// testImplementation("org.springframework.boot:spring-boot-starter-security-test")
|
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
|
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
|
|
||||||
testImplementation("org.wiremock:wiremock-standalone:$wiremockVersion")
|
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-session-jdbc-test")
|
|
||||||
|
|
||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencyManagement {
|
dependencyManagement {
|
||||||
imports {
|
imports {
|
||||||
mavenBom("org.springframework.ai:spring-ai-bom:${property("springAiVersion")}")
|
mavenBom("org.springframework.ai:spring-ai-bom:$springAiVersion")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// Spring Boot Starters
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-session-jdbc")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-validation")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-webmvc")
|
||||||
|
|
||||||
|
// Spring AI Starters (versions managed by spring-ai-bom)
|
||||||
|
implementation("org.springframework.ai:spring-ai-starter-model-openai")
|
||||||
|
implementation("org.springframework.ai:spring-ai-starter-vector-store-pgvector")
|
||||||
|
|
||||||
|
// Database
|
||||||
|
implementation("org.postgresql:postgresql:$postgresqlVersion")
|
||||||
|
|
||||||
|
// Tooling & Code Generation
|
||||||
|
compileOnly("org.projectlombok:lombok")
|
||||||
|
annotationProcessor("org.projectlombok:lombok")
|
||||||
|
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||||
|
|
||||||
|
// Testing
|
||||||
|
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
|
||||||
|
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
|
||||||
|
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
|
||||||
|
testImplementation("org.springframework.boot:spring-boot-starter-session-jdbc-test")
|
||||||
|
testImplementation("org.wiremock:wiremock-standalone:$wiremockVersion")
|
||||||
|
|
||||||
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||||
|
}
|
||||||
|
|
||||||
tasks.withType<JavaCompile> {
|
tasks.withType<JavaCompile> {
|
||||||
options.compilerArgs.add("-parameters")
|
options.compilerArgs.add("-parameters")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.vaessl.app.shared.ServiceItem;
|
import com.vaessl.app.shared.ServiceItem;
|
||||||
import com.vaessl.app.shared.ServiceType;
|
import com.vaessl.app.shared.ServiceType;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Embeds {@link ServiceItem}s into the shared vector store and prunes entries that no longer exist
|
* Embeds {@link ServiceItem}s into the shared vector store and prunes entries that no longer exist
|
||||||
@@ -18,14 +19,11 @@ import com.vaessl.app.shared.ServiceType;
|
|||||||
* singleton bean shared across concurrent sync runs; callers own the per-sync ID accumulator.
|
* singleton bean shared across concurrent sync runs; callers own the per-sync ID accumulator.
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class EmbeddingService {
|
public class EmbeddingService {
|
||||||
|
|
||||||
private final VectorStore vectorStore;
|
private final VectorStore vectorStore;
|
||||||
|
|
||||||
public EmbeddingService(VectorStore vectorStore) {
|
|
||||||
this.vectorStore = vectorStore;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Embeds and upserts {@code items} into the vector store, appending each item's ID to
|
* Embeds and upserts {@code items} into the vector store, appending each item's ID to
|
||||||
* {@code currentItemIds} so the caller can later prune stale entries via
|
* {@code currentItemIds} so the caller can later prune stale entries via
|
||||||
|
|||||||
Reference in New Issue
Block a user