Skip to content

Commit a79d4c2

Browse files
committed
feat: replace search_knowledge API with Volcengine Viking SDK
1 parent 494cdb5 commit a79d4c2

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

veadk/knowledgebase/backends/vikingdb_knowledge_backend.py

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from veadk.knowledgebase.entry import KnowledgebaseEntry
3232
from veadk.utils.logger import get_logger
3333
from veadk.utils.misc import formatted_timestamp
34+
from volcengine.viking_knowledgebase import VikingKnowledgeBaseService
3435

3536
try:
3637
from veadk.integrations.ve_tos.ve_tos import VeTOS
@@ -113,10 +114,24 @@ class VikingDBKnowledgeBackend(BaseKnowledgebaseBackend):
113114
volcengine_project: str = "default"
114115

115116
region: str = "cn-beijing"
117+
base_url: str = "https://api-knowledgebase.mlp.cn-beijing.volces.com"
118+
host: str = "api-knowledgebase.mlp.cn-beijing.volces.com"
119+
schema: str = "https"
116120

117121
tos_config: TOSConfig | NormalTOSConfig = Field(default_factory=TOSConfig)
118122

123+
_viking_sdk_client = None
124+
119125
def model_post_init(self, __context: Any) -> None:
126+
self._set_env_host()
127+
128+
self._viking_sdk_client = VikingKnowledgeBaseService(
129+
host=self.host,
130+
ak=self.volcengine_access_key,
131+
sk=self.volcengine_secret_key,
132+
scheme=self.schema,
133+
)
134+
120135
self.precheck_index_naming()
121136

122137
# check whether collection exist, if not, create it
@@ -502,8 +517,6 @@ def _search_knowledge(
502517
rerank: bool = True,
503518
chunk_diffusion_count: int | None = 3,
504519
) -> list[KnowledgebaseEntry]:
505-
SEARCH_KNOWLEDGE_PATH = "/api/knowledge/collection/search_knowledge"
506-
507520
query_param = (
508521
{
509522
"doc_filter": {
@@ -523,26 +536,17 @@ def _search_knowledge(
523536
"chunk_diffusion_count": chunk_diffusion_count,
524537
}
525538

526-
response = self._do_request(
527-
body={
528-
"name": self.index,
529-
"project": self.volcengine_project,
530-
"query": query,
531-
"limit": top_k,
532-
"query_param": query_param,
533-
"post_processing": post_precessing,
534-
},
535-
path=SEARCH_KNOWLEDGE_PATH,
536-
method="POST",
539+
response = self._viking_sdk_client.search_knowledge(
540+
collection_name=self.index,
541+
project=self.volcengine_project,
542+
query=query,
543+
limit=top_k,
544+
query_param=query_param,
545+
post_processing=post_precessing,
537546
)
538547

539-
if response.get("code") != 0:
540-
raise ValueError(
541-
f"Error during knowledge search: {response.get('code')}, message: {response.get('message')}"
542-
)
543-
544548
entries = []
545-
for result in response.get("data", {}).get("result_list", []):
549+
for result in response.get("result_list", []):
546550
doc_meta_raw_str = result.get("doc_info", {}).get("doc_meta")
547551
doc_meta_list = json.loads(doc_meta_raw_str) if doc_meta_raw_str else []
548552
metadata = {}
@@ -555,28 +559,28 @@ def _search_knowledge(
555559

556560
return entries
557561

558-
def _do_request(
559-
self,
560-
body: dict,
561-
path: str,
562-
method: Literal["GET", "POST", "PUT", "DELETE"] = "POST",
563-
) -> dict:
564-
VIKINGDB_KNOWLEDGEBASE_BASE_URL = (
565-
"https://api-knowledgebase.mlp.cn-beijing.volces.com"
566-
)
567-
full_path = f"{VIKINGDB_KNOWLEDGEBASE_BASE_URL}{path}"
568-
562+
def _set_env_host(self):
569563
env_host = getenv(
570564
"DATABASE_VIKING_BASE_URL", default_value=None, allow_false_values=True
571565
)
572566
if env_host:
573567
if env_host.startswith("http://") or env_host.startswith("https://"):
574-
full_path = f"{env_host}{path}"
568+
self.base_url = env_host
569+
split_url = env_host.split("://")
570+
self.host = split_url[-1]
571+
self.schema = split_url[0]
575572
else:
576573
raise ValueError(
577574
"DATABASE_VIKING_BASE_URL must start with http:// or https://"
578575
)
579576

577+
def _do_request(
578+
self,
579+
body: dict,
580+
path: str,
581+
method: Literal["GET", "POST", "PUT", "DELETE"] = "POST",
582+
) -> dict:
583+
full_path = f"{self.base_url}{path}"
580584
volcengine_access_key = self.volcengine_access_key
581585
volcengine_secret_key = self.volcengine_secret_key
582586
session_token = self.session_token

0 commit comments

Comments
 (0)