Skip to content

Commit

Permalink
Merge pull request #16 from theam/embeddings_space_component
Browse files Browse the repository at this point in the history
add embeddings space component
  • Loading branch information
juanjoman authored Aug 31, 2023
2 parents 892151b + 6888933 commit 4968a61
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 27 deletions.
26 changes: 1 addition & 25 deletions docs-site/docs/03_components/02_embeddings_space.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,41 +23,17 @@ EmbeddingsStore pineconeStore = new PineconeEmbeddingsStore("YOUR_PINECONE_URL",
EmbeddingsSpaceComponent embeddingsSpace = new EmbeddingsSpaceComponent(openAIModel, pineconeStore);
```

## `generate`

Generates an embedding from a text without persisting it.

- **Parameters**:
- `text`: The textual input for embedding.
- `additionalMetadata`: Supplementary metadata associated with the text.
- **Returns**: The generated embedding.

```java
String sampleText = "Hello, eLLMental!";
Map<String, String> additionalMetadata = new HashMap<>();
additionalMetadata.put("key", "value");

Embedding embedding = embeddingsSpace.generate(sampleText, additionalMetadata);
```

## `save`

Generates and persists an embedding for a given text.

- **Parameters**:
- `text`: Text to be embedded.
- `additionalMetadata`: (Optional) Additional metadata.
- **Returns**: The generated embedding.

```java
Map<String, String> additionalMetadata = new HashMap<>();
additionalMetadata.put("key", "value");

String sampleText = "Hello, eLLMental!";
Embedding embedding = embeddingsSpace.save(sampleText, additionalMetadata);

// Or just
Embedding embedding = embeddingSpace.save(sampleText);
Embedding embedding = embeddingsSpace.save(sampleText);
```

## `mostSimilarEmbeddings`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import java.util.List;

public class OpenAIEmbeddingsModelTest {
@Test
@Test
public void testGenerateEmbedding(){
OpenAIEmbeddingsModel openAI = new OpenAIEmbeddingsModel("fakeAPIKey");
Embedding embedding = openAI.generateEmbedding("The Agile Monkeys rule!");
Expand Down
24 changes: 24 additions & 0 deletions modules/embeddingsspace/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
plugins {
id 'java'
}

group = "com.theagilemonkeys.ellmental"
version = '1.0-SNAPSHOT'


repositories {
mavenCentral()
}

dependencies {
implementation project(':core')
implementation project(':modules:embeddingsgeneration')
implementation project(':modules:embeddingsstore')

testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
}

test {
useJUnitPlatform()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.theagilemonkeys.ellmental.embeddingsspace;

import com.theagilemonkeys.ellmental.core.schema.Embedding;
import com.theagilemonkeys.ellmental.embeddingsgeneration.EmbeddingsGenerationModel;
import com.theagilemonkeys.ellmental.embeddingsstore.EmbeddingsStore;

import java.util.List;

public class EmbeddingsSpaceComponent {

private final EmbeddingsGenerationModel embeddingsGenerationModel;
private final EmbeddingsStore embeddingsStore;

public EmbeddingsSpaceComponent(EmbeddingsGenerationModel embeddingsGenerationModel, EmbeddingsStore embeddingsStore) {
this.embeddingsGenerationModel = embeddingsGenerationModel;
this.embeddingsStore = embeddingsStore;
}

private Embedding generate(String text) {
return embeddingsGenerationModel.generateEmbedding(text);
}

public Embedding save(String text) {
Embedding embedding = generate(text);
embeddingsStore.store(embedding);
return embedding;
}

public List<Embedding> mostSimilarEmbeddings(Embedding referenceEmbedding, int limit) {
return embeddingsStore.similaritySearch(referenceEmbedding, limit);
}

public List<Embedding> mostSimilarEmbeddings(String referenceText, int limit) {
Embedding embedding = generate(referenceText);

return mostSimilarEmbeddings(embedding, limit);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.theagilemonkeys.ellmental.embeddingsspace;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertTrue;

public class EmbeddingsSpaceComponentTest {

// TODO: Use mockito to Mock these
// @Spy
// private final EmbeddingsGenerationModel model;
// @Spy
// private final EmbeddingsStore store;
// @Inject
// private final EmbeddingsSpaceComponent embeddingsSpaceComponent;

@Test
public void todo() {
assertTrue(true);
}
}
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ include(
"core",
"modules:embeddingsgeneration",
"modules:embeddingsstore",
"modules:embeddingsspace",
"examples:simplejava"
)

0 comments on commit 4968a61

Please sign in to comment.