You need to enable JavaScript to run this app.
向量数据库VikingDB

向量数据库VikingDB

复制全文
Java SDK
核心流程
复制全文
核心流程

本页面提供一个通过 Java SDK 完成知识库文档导入与 RAG 问答的完整流程请求示例,涵盖文档上传、向量检索及大模型问答调用,注意使用时根据实际情况填充账户鉴权信息、collection 名称、文档路径和查询内容。

package com.volcengine.vikingdb.runtime.knowledge._05_overall;

import com.volcengine.vikingdb.runtime.core.RequestAddition;
import com.volcengine.vikingdb.runtime.knowledge.model.request.AddDocV2Request;
import com.volcengine.vikingdb.runtime.knowledge.model.request.ChatCompletionRequest;
import com.volcengine.vikingdb.runtime.knowledge.model.request.ChatMessage;
import com.volcengine.vikingdb.runtime.knowledge.model.request.SearchKnowledgeRequest;
import com.volcengine.vikingdb.runtime.knowledge.model.response.AddDocResponse;
import com.volcengine.vikingdb.runtime.knowledge.model.response.ChatCompletionResponse;
import com.volcengine.vikingdb.runtime.knowledge.model.response.SearchKnowledgeResponse;
import com.volcengine.vikingdb.runtime.knowledge.service.KnowledgeCollectionClient;
import com.volcengine.vikingdb.runtime.knowledge.service.KnowledgeService;
import com.volcengine.vikingdb.runtime.knowledge.util.ExampleUtil;

import java.util.Arrays;
import java.util.List;
import java.util.UUID;

public class Main {
    public static void main(String[] args) throws Exception {
        KnowledgeService service = ExampleUtil.newKnowledgeService(ExampleUtil.preferAuth());
        KnowledgeCollectionClient kc = service.collection(ExampleUtil.defaultCollectionMeta());

        String docId = ExampleUtil.envOrDefault("VIKING_DOC_ID", "java-overall-doc-" + UUID.randomUUID());
        String uri = ExampleUtil.envOrDefault("VIKING_DOC_URI", "tos://your-bucket/your-path/your-file.pdf");

        AddDocV2Request addReq = AddDocV2Request.builder()
                .docId(docId)
                .docName(ExampleUtil.envOrDefault("VIKING_DOC_NAME", "your-file-name.pdf"))
                .uri(uri)
                .build();
        AddDocResponse addResp = kc.addDocV2(addReq, new RequestAddition());
        ExampleUtil.printJson("overall_add_doc_v2", addResp);

        SearchKnowledgeRequest skReq = SearchKnowledgeRequest.builder()
                .query(ExampleUtil.envOrDefault("VIKING_QUERY", "your query"))
                .limit(10)
                .denseWeight(0.5)
                .build();
        SearchKnowledgeResponse skResp = kc.searchKnowledge(skReq, new RequestAddition());
        ExampleUtil.printJson("overall_search_knowledge", skResp);

        String contextText;
        if (skResp == null || skResp.getData() == null || skResp.getData().getResultList() == null
                || skResp.getData().getResultList().isEmpty()) {
            contextText = "(检索结果为空或不可用)";
        } else {
            StringBuilder sb = new StringBuilder();
            int limit = Math.min(5, skResp.getData().getResultList().size());
            for (int i = 0; i < limit; i++) {
                if (i > 0) {
                    sb.append("\n\n");
                }
                String title = skResp.getData().getResultList().get(i).getChunkTitle();
                String content = skResp.getData().getResultList().get(i).getContent();
                sb.append("【").append(title == null ? "" : title).append("】\n")
                        .append(content == null ? "" : content);
            }
            contextText = sb.toString();
        }

        String systemPrompt = "你是一位专业的财报分析师,你需要根据「参考资料」来回答接下来的「用户问题」,这些信息在 <context></context> XML 标签之内。回答必须在参考资料范围内,尽可能简洁,无法回答时请礼貌说明并引导提供更多信息。\n\n<context>\n"
                + contextText
                + "\n</context>";

        List<ChatMessage> messages = Arrays.asList(
                ChatMessage.builder().role("system").content(systemPrompt).build(),
                ChatMessage.builder().role("user").content(skReq.getQuery()).build());

        ChatCompletionRequest chatReq = ChatCompletionRequest.builder()
                .model(ExampleUtil.envOrDefault("VIKING_CHAT_MODEL", "Doubao-1-5-pro-32k"))
                .messages(messages)
                .maxTokens(4096)
                .temperature(0.1)
                .returnTokenUsage(true)
                .apiKey(ExampleUtil.envOrDefault("VIKING_CHAT_API_KEY", ""))
                .stream(false)
                .build();

        ChatCompletionResponse chatResp = service.chatCompletion(
                chatReq,
                new RequestAddition().setRequestId("knowledge_chat_completion_java_example"));
        ExampleUtil.printJson("overall_chat_completion", chatResp);
    }
}

最近更新时间:2026.03.26 17:20:14
这个页面对您有帮助吗?
有用
有用
无用
无用