Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elleai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
E
ellehuis-group
backend
elleai
Commits
a5babef5
Commit
a5babef5
authored
Oct 31, 2024
by
杨翌文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feature: 缓存model
parent
e51a2e6c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
5 deletions
+17
-5
OpenAIEmbeddingFacade.java
...n/java/cn/breeze/elleai/facade/OpenAIEmbeddingFacade.java
+17
-5
No files found.
src/main/java/cn/breeze/elleai/facade/OpenAIEmbeddingFacade.java
View file @
a5babef5
...
...
@@ -2,6 +2,7 @@ package cn.breeze.elleai.facade;
import
cn.breeze.elleai.application.dto.langchain.EmbeddingRequest
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
dev.langchain4j.data.embedding.Embedding
;
import
dev.langchain4j.data.segment.TextSegment
;
...
...
@@ -11,7 +12,10 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.time.Duration
;
import
java.util.List
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentMap
;
/**
* @author yangyw
...
...
@@ -30,17 +34,25 @@ public class OpenAIEmbeddingFacade implements EmbeddingService {
@Value
(
"${embedding.model-name:bge-m3}"
)
private
String
modelName
;
private
final
ConcurrentMap
<
String
,
OpenAiEmbeddingModel
>
modelMap
=
new
ConcurrentHashMap
<>();
/**
* 获取OpenAiEmbeddingModel
* @param request
* @return
*/
private
OpenAiEmbeddingModel
getModel
(
EmbeddingRequest
request
)
{
return
OpenAiEmbeddingModel
.
builder
()
.
modelName
(
StrUtil
.
blankToDefault
(
request
.
getModel
(),
modelName
))
.
baseUrl
(
StrUtil
.
blankToDefault
(
request
.
getApiBaseUrl
(),
apiBaseUrl
))
.
apiKey
(
StrUtil
.
blankToDefault
(
request
.
getApiKey
(),
apiKey
))
.
build
();
return
modelMap
.
compute
(
request
.
getApiBaseUrl
()
+
request
.
getModel
(),
(
k
,
v
)
->
{
if
(
ObjectUtil
.
isNull
(
v
))
{
v
=
OpenAiEmbeddingModel
.
builder
()
.
modelName
(
StrUtil
.
blankToDefault
(
request
.
getModel
(),
modelName
))
.
baseUrl
(
StrUtil
.
blankToDefault
(
request
.
getApiBaseUrl
(),
apiBaseUrl
))
.
apiKey
(
StrUtil
.
blankToDefault
(
request
.
getApiKey
(),
apiKey
))
.
timeout
(
Duration
.
ofSeconds
(
30
))
.
build
();
}
return
v
;
});
}
@Override
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment