一文讲透向量 Embedding:从数学概念到 LangChain4j + Qdrant 实战

OpenViking上下文数据库Golang集成实践 技术创新文件系统范式:将AI Agent的上下文管理从扁平向量存储提升为结构化文件系统分层检索策略:L0/L1/L2三层加载机制,减少62.1%的Token消耗记忆自迭代:会话提交触发Agent经验沉淀,实现越用越智能工程实践完整Golang实现:提供生产级可用的OpenViking客户端库企业级集成方案:涵盖文档摄入、检索、会话管理等全流程性能优化成果:检索准确率提升24.1%,响应时间减少53.3%可观测性提升可视化检索轨迹:实现检索过程的白盒化,调试效率提升77.1%全面监控指标。 阅读详情

“

大模型的世界,本质上是一场「万物皆可向量」的游戏。 这篇文章带你从零开始,把「向量」这个看似抽象的概念,一路走到能跑起来的工程代码。


一、什么是向量?🧭

在深度学习的世界里,向量是最基础、也是最重要的概念之一。

它不仅用来表示数据,更贯穿了模型的输入、输出以及内部计算的每一个环节。下面我们从几个角度,把它彻底讲明白。

1. 基本定义

向量,本质上是一组有序排列的数字。这些数字被称为向量的「分量」或「元素」。

  • 在二维空间里,一个点可以用「横坐标 + 纵坐标」两个数来表示;
  • 在三维空间里,则需要「长、宽、高」三个数;
  • 更一般地,在 n 维空间中,一个向量就是 n 个实数组成的序列。

2. 向量在机器学习中的作用

向量几乎撑起了机器学习的半边天:

  • 特征表示:原始数据要先转换成数值形式,机器才能处理。这些特征值按顺序排好,就成了「特征向量」。
  • 模型参数:很多算法内部都在学习「权重向量」。比如线性回归,就是在找一个最优的权重向量 w,让预测值和真实值的误差最小。
  • 嵌入层(Embedding):在 NLP 领域,词向量、句向量被用来捕捉文本语义。训练得到的词嵌入,能真实反映词语之间的语义关系。

3. 向量的运算规则

向量支持加法、减法、标量乘法等基础运算,还有内积(点积)、外积(叉积)等特殊运算。

正是这些运算,构建起了复杂神经网络的底层骨架。

4. 向量化编程

为了提升效率,工程师往往会用「向量化」技术——一次性对整个数组做运算,而不是逐个元素循环处理。

这种方式极大加速了计算,也让代码更简洁优雅。

5. 向量空间模型

这是信息检索中的经典方法:把文档表示成由词汇项组成的向量,每个维度对应一个术语,值则反映该术语在文档中的重要程度。

于是,「文档相似度」就变成了「向量相似度」的计算问题。

“

一句话总结:向量是连接理论与实践的桥梁。理解了向量,你就握住了理解现代大模型的钥匙。🔑


二、向量的数学本质 📐

向量是既有大小、又有方向的量。在数学中,我们通常用「有向线段」来表示它——线段的长度代表大小,箭头的指向代表方向。

关于向量,有几条关键性质值得记住:

  1. 向量只有方向和大小。等长、平行、同向的向量,因为大小和方向都一致,就是同一个向量,也叫相等向量。
  2. 两个向量相等可以用「=」连接。但向量之间没有大于或小于关系,不能用「>」「<」连接。
  3. 方向相同或相反的向量,叫作共线向量,也叫平行向量。
  4. 向量之间可以用「∥」或「⊥」连接。其中「a∥b」表示 a 与 b 共线,「a⊥b」表示 a 与 b 所在直线互相垂直。
  5. 向量 a 的大小,又称长度、模长,简称模,记作 |a|。
  6. 模长是数值而非向量,所以可以用「>」「<」比较大小。
  7. 长度为 0 的向量叫作零向量。
  8. 零向量与任意向量平行。
  9. 长度为 1 个单位的向量叫作单位向量。

三、什么是向量化?🔄

一句话:向量化,就是把文档、字符等内容,转换成一组浮点数组。

“

下图来源于 Qdrant 官方文档(向量检索概述章节)。


四、实战示例:LangChain4j + Qdrant 💻

理论讲够了,接下来上真代码。我们参考 LangChain4j 官方示例(Qdrant Embedding Store Example),来跑通整条链路。

官方案例:环境搭建

新建模块,配置 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <parent>    <groupId>com.whc</groupId>    <artifactId>langChain4j-whc</artifactId>    <version>1.0-SNAPSHOT</version>  </parent>  <artifactId>langchain4j-whc-embedding</artifactId>  <packaging>jar</packaging>  <name>langchain4j-whc-embedding</name>  <properties>    <maven.compiler.source>17</maven.compiler.source>    <maven.compiler.target>17</maven.compiler.target>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>  <dependencies>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <!--langChain4j -->    <dependency>      <groupId>dev.langchain4j</groupId>      <artifactId>langchain4j-open-ai</artifactId>    </dependency>    <dependency>      <groupId>dev.langchain4j</groupId>      <artifactId>langchain4j</artifactId>    </dependency>    <dependency>      <groupId>dev.langchain4j</groupId>      <artifactId>langchain4j-reactor</artifactId>    </dependency>    <!--  阿里百炼平台 -->    <dependency>      <groupId>dev.langchain4j</groupId>      <artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>    </dependency>    <!--lombok-->    <dependency>      <groupId>org.projectlombok</groupId>      <artifactId>lombok</artifactId>      <optional>true</optional>    </dependency>    <!--hutool-->    <dependency>      <groupId>cn.hutool</groupId>      <artifactId>hutool-all</artifactId>      <version>5.8.22</version>    </dependency>    <dependency>      <groupId>dev.langchain4j</groupId>      <artifactId>langchain4j-spring-boot-starter</artifactId>    </dependency>    <!--qdrant相关-->    <dependency>      <groupId>dev.langchain4j</groupId>      <artifactId>langchain4j-qdrant</artifactId>      <version>1.5.0-beta11</version>    </dependency>    <dependency>      <groupId>dev.langchain4j</groupId>      <artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>      <version>1.5.0-beta11</version>    </dependency>    <dependency>      <groupId>org.testcontainers</groupId>      <artifactId>qdrant</artifactId>      <version>1.19.6</version>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-maven-plugin</artifactId>      </plugin>    </plugins>    </build></project>

核心代码(含详细注释)

在官方类的基础上稍作修改,并补充了完整注释,方便理解每一步在做什么:

public class QdrantEmbeddingStoreExample {    /**     * gRPC服务端口配置     * 用于连接向量数据库的gRPC通信端口     */    private static int grpcPort = 6334;    /**     * 集合名称配置     * 指定向量数据库中使用的集合名称     */    private static String collectionName = "langchain4j-whc";    /**     * 距离计算方式配置     * 设置向量相似度计算的距离度量方式为余弦距离     */    private static Collections.Distance distance = Collections.Distance.Cosine;    /**     * 向量维度配置     * 指定向量的维度大小为384维     */    private static int dimension = 384;    /**     * 数据库主机地址配置     * 向量数据库服务器的IP地址     */    private static final String HOST = "192.168.100.130";    /**     * 数据库端口配置     * 向量数据库服务的端口号,与gRPC端口相同     */    private static final int PORT = 6334;    /**     * 主函数,演示了使用Qdrant向量数据库进行文本嵌入存储和相似性搜索的完整流程     *     * @param args 命令行参数数组     * @throws ExecutionException 当异步执行出现异常时抛出     * @throws InterruptedException 当线程被中断时抛出     */    public static void main(String[] args) throws ExecutionException, InterruptedException {        // 创建Qdrant嵌入存储实例,用于存储和检索文本嵌入向量        EmbeddingStore<TextSegment> embeddingStore =        QdrantEmbeddingStore.builder()        .host(HOST)        .port(PORT)        .collectionName(collectionName)        .build();        // 创建Qdrant客户端,用于与Qdrant服务器进行通信        QdrantClient client =        new QdrantClient(            QdrantGrpcClient.newBuilder(HOST, PORT, false)            .build());        // 异步创建集合,定义向量的维度和距离计算方式        client        .createCollectionAsync(            collectionName,            Collections.VectorParams.newBuilder().setDistance(distance).setSize(dimension).build())        .get();        // 初始化嵌入模型,用于将文本转换为向量表示        EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();        // 创建并存储第一个文本段落的嵌入向量        TextSegment segment1 = TextSegment.from("I've been to France twice.");        Embedding embedding1 = embeddingModel.embed(segment1).content();        embeddingStore.add(embedding1, segment1);        // 创建并存储第二个文本段落的嵌入向量        TextSegment segment2 = TextSegment.from("New Delhi is the capital of India.");        Embedding embedding2 = embeddingModel.embed(segment2).content();        embeddingStore.add(embedding2, segment2);        // 执行相似性搜索,查找与查询文本最相似的文本段落        Embedding queryEmbedding = embeddingModel.embed("Did you ever travel abroad?").content();        EmbeddingSearchRequest embeddingSearchRequest = EmbeddingSearchRequest.builder()        .queryEmbedding(queryEmbedding)        .maxResults(1)        .build();        List<EmbeddingMatch<TextSegment>> matches = embeddingStore.search(embeddingSearchRequest).matches();        EmbeddingMatch<TextSegment> embeddingMatch = matches.get(0);        // 输出匹配结果的相似度分数和文本内容        System.out.println(embeddingMatch.score());        System.out.println(embeddingMatch.embedded().text());    }}

这里的嵌入模型用的是 all-MiniLM-L6-v2。

“

💡 all-MiniLM-L6-v2 是 MiniLM 系列的一个小型语言模型,通过「知识蒸馏」技术从更大的模型压缩而来。它的目标是——在保持较高性能的同时,尽可能降低计算资源需求,非常适合本地和轻量场景。

✅ 测试一下

代码里把两条英文句子转成了向量并保存下来:

然后提问:哪句话更适合回答 "Did you ever travel abroad?"

结果如下:

0.7378319074630284I've been to France twice.

「我去过法国两次」——完美命中,模型准确理解了「出国旅行」的语义。🎯


五、接口方式:接入阿里百炼向量模型 🔌

模型选择

这里我们选用阿里云百炼平台的向量模型 text-embedding-v3。

配置类

@Slf4j@Getter@Configurationpublic class LlmConfig {    @Value("${ai.dashScope.apiKey}")    private String dashScopeApiKey;    @Value("${ai.dashScope.modelName}")    private String dashScopeModelName;    @Value("${ai.dashScope.baseUrl}")    private String dashScopeBaseUrl;    @Value("${qdrant.host}")    private String qdrantHost;    @Value("${qdrant.port}")    private int qdrantPort;    @Value("${qdrant.collectionName}")    private String qdrantCollectionName;    /**     * 创建EmbeddingModel 向量模型     *     * @return EmbeddingModel     */    @Bean    public EmbeddingModel embeddingModel() {        return OpenAiEmbeddingModel.builder()        .apiKey(dashScopeApiKey)        .modelName(dashScopeModelName)        .baseUrl(dashScopeBaseUrl)        .build();    }    /**     * 创建Qdrant客户端     *     * @return QdrantClient     */    @Bean    public QdrantClient qdrantClient() {        QdrantGrpcClient.Builder grpcClientBuilder =        QdrantGrpcClient.newBuilder(qdrantHost, qdrantPort, false);        return new QdrantClient(grpcClientBuilder.build());    }    @Bean    public EmbeddingStore<TextSegment> embeddingStore() {        return QdrantEmbeddingStore.builder()        .host(qdrantHost)        .port(qdrantPort)        .collectionName(qdrantCollectionName)        .build();    }}

YAML 配置

port: 9008  servlet:    encoding:      enabled: true      force: true      charset: UTF-8spring:  application:    name: langchain_whc_embeddingai:  dashScope:    # 配置dashScope    apiKey: ${AI_DASHSCOPE_API_KEY}    modelName: ${AI_DASHSCOPE_MODEL_NAME}    baseUrl: ${AI_DASHSCOPE_BASE_URL}qdrant:  host: ${QDRANT_HOST}  port: ${QDRANT_PORT}  collectionName: ${QDRANT_COLLECTION_NAME}

Controller

@Slf4j@RestController@RequiredArgsConstructorpublic class EmbeddingController {    private final LlmConfig llmConfig;    private final EmbeddingModel embeddingModel;    private final QdrantClient qdrantClient;    private final EmbeddingStore<TextSegment> embeddingStore;    @GetMapping(value = "/embedding/createCollection")    public void createCollection() {        var vectorParams = Collections.VectorParams.newBuilder()        .setDistance(Collections.Distance.Cosine)        .setSize(1024)        .build();        qdrantClient.createCollectionAsync(llmConfig.getQdrantCollectionName(), vectorParams);    }}
✅ 测试新增 Collection

访问接口:http://localhost:9008/embedding/createCollection

测试结果:成功新增了一个 Collection。

✅ 测试新增 Points

在 Controller 中增加接口,这次我们塞一首自创的词进去:

/**     * 处理GET请求,向嵌入存储中添加文本段落的嵌入向量     *     * @return 添加操作的结果标识符字符串     */    @GetMapping(value = "/embedding/add")    public String add() {        // 定义《永遇乐・师徒取经》词牌的文本内容作为待处理文本        String prompt = """                     永遇乐・师徒取经                万里西行,风沙漫卷,云路迢递。玄奘慈眉,凝眸西向,志比金石厉。                悟空火眼,金箍掣处,妖魅现形惊悸。笑猪痴、贪眠恋栈,也随杖履千里。                沙憎谨肃,行囊稳护,默默担当行李。九九磨难,千般险厄,终把真经觅。东归胜果,流传千古,漫说佛门真谛。                到如今、传奇犹在,世人共记。                     """;        // 将文本内容转换为文本段落对象,并添加元数据信息        TextSegment segment = TextSegment.from(prompt);        segment.metadata().put("author", "robot");        segment.metadata().put("title", "永遇乐・师徒取经");        // 生成文本段落的嵌入向量        Embedding embedding = embeddingModel.embed(segment).content();        // 将嵌入向量和文本段落添加到嵌入存储中        String result = embeddingStore.add(embedding, segment);        log.info(result);        return result;    }

测试效果:

“

你可以多塞几条 points 进去,让检索结果更有对比性。

✅ 测试查询
/**     * 处理/embedding/query1路径的GET请求,用于查询与"写爱情的诗"相关的嵌入向量匹配结果     * 该方法不接受参数,无返回值     */    @GetMapping(value = "/embedding/query")    public void query1() {        // 生成查询文本"写爱情的诗"的嵌入向量        Embedding queryEmbedding = embeddingModel.embed("与爱情相关的").content();        // 构建嵌入搜索请求        EmbeddingSearchRequest embeddingSearchRequest = EmbeddingSearchRequest.builder()                .queryEmbedding(queryEmbedding)                .build();        // 执行嵌入向量搜索        EmbeddingSearchResult<TextSegment> searchResult = embeddingStore.search(embeddingSearchRequest);        // 输出查询结果        searchResult.matches().forEach(match -> {            log.info("\n匹配度得分---->"+ match.score());            log.info("\n"+match.embedded().text());        });    }

测试结果有点意思——排序跟直觉略有出入:

当然,也可以加上过滤条件,精确锁定某个标题:

EmbeddingSearchRequest embeddingSearchRequest = EmbeddingSearchRequest.builder()                .queryEmbedding(queryEmbedding)                .filter(metadataKey("title").isEqualTo("鹧鸪天・别绪"))                .build();


六、写在最后 📝

从「向量是什么」到「用 LangChain4j + Qdrant 跑通一整套向量检索」,我们走完了从理论到工程的完整闭环:

  • 理论层:向量是有序数字组,是大模型理解世界的语言;
  • 工程层:向量化把文本变成浮点数组,向量数据库负责高效存储与相似度检索;
  • 实践层:无论是本地的 all-MiniLM-L6-v2,还是云端的 text-embedding-v3,都能轻松接入。

理解了向量,你就理解了大模型「思考」的底层方式。剩下的,就是动手把它跑起来。💪

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

Java AI应用开发实战:Langchain4j + DeepSeek + RAG + Agent全栈指南 随着大模型能力的普及,AI应用开发已不再局限于Python生态,越来越多的Java后端工程师开始探索如何将智能能力融入现有业务系统。大模型应用的核心原理包括对话生成、检索增强与智能体编排,而这一系列能力在Java领域正通过Spring Boot生态快速落地。Langchain4j作为参考LangChain设计的Java框架,提供了从模型接入、工具调用到RAG知识库构建的完整组件,DeepSeek则以其高性价比和OpenAI兼容接口成为热门选择。无论是面向私有知识库的智能问答,还是需要多步自主决策的Agent 阅读详情

相关推荐

Java后端转型AI应用开发实战:基于SpringAI与LangChain4j构建RAG与Agent

在当今企业数字化转型浪潮中,AI应用开发已成为构建智能系统的核心能力。其原理在于通过大语言模型(LLM)处理自然语言,并结合检索增强生成(RAG)等技术,将非结构化数据转化为可用的知识。这项技术的价值在于能够为企业打造具备语义理解、自主决策能力的智能应用,例如智能客服、知识库和自动化流程助手。应用场景广泛覆盖金融、电商、医疗等多个行业,用于提升信息检索效率和决策智能化水平。本文聚焦于如何利用SpringAI和LangChain4j两大框架,为Java开发者提供一条清晰的工程化路径,将AI能力无缝集成到熟悉的

weixin_34121304的博客 334

基于RAG的企业智能客服项目,已拿70万offer!

基于 RAG 构建一套企业智能客服系统📖。

m0_59164520的博客 1444

从原理到实战:Embedding模型如何驱动RAG系统实现精准语义检索

在人工智能与自然语言处理领域,将非结构化的文本数据转化为机器可理解的数值表示,是实现语义理解的基础。其核心原理在于通过深度神经网络(如Transformer的Encoder部分)对文本进行上下文编码,将高维、稀疏的词语映射为低维、稠密的语义向量。这一过程,即encoder得到embedding,使得语义相近的文本在向量空间中距离更近。该技术的核心价值在于为海量文本信息建立了可计算、可比较的数学基础,从而支撑起智能搜索、推荐系统、文本分类等上层应用。尤其在当前热门的检索增强生成(RAG)架构中,高质量的文本向

weixin_33919950的博客 317

从Vibe Coding到可控生产力:Harness Engineering的实践启示

摘要:OpenAI提出的Harness Engineering(工程化治理)理念为AI Agent时代的软件工程提供了关键方法论,旨在解决代码高产出下的质量闭环、上下文管理等核心矛盾。其三大目标包括重构工程师角色、将AI纳入可控体系、实现低成本纠错,通过六大举措(如角色重构、机械化约束、反熵机制等)重构工程流程。该理念与vibe coding高度互补,既保留灵感驱动的敏捷性,又通过工程化体系保障稳定性,最终推动工程师从"代码生产者"升级为"工程体系设计者"。

小程故事多的博客 4400

用AI学习graphify

Graphify是一个AI驱动的知识图谱构建工具,能够将代码、文档、论文、图像和视频等多模态数据转换为结构化知识图谱。其核心技术特点包括: 多模态处理能力: 支持25+编程语言的AST解析 处理PDF、Markdown等文档 集成Whisper进行音视频转录 高效知识提取: 采用确定性AST解析与LLM语义提取结合 相比直接读取源文件,查询token消耗最多减少71.5倍 增量更新机制仅处理变更文件 智能分析功能: 自动识别高中心性的"上帝节点" 发现跨领域的"意外连接&quo

我的专栏 749

到底什么是Harness工程?一篇文章从入门到企业落地全解析

随着OpenClaw爆火,Harness Engineering(驾驭工程)成为AI编程时代的热门概念,很多小白对其感到陌生。本文用通俗类比和真实案例,避开复杂术语,从基础定义入手,讲清Harness Engineering的核心逻辑——人类工程师设计“约束系统”(马具),让AI模型(烈马)安全高效地完成代码工作,同时拆解其核心组件、企业落地场景和实战成果,帮小白快速入门,读懂这项能解放人力、提升效率的新技术,轻松掌握它的核心价值和落地思路。

program哲学 3269

langchain4j-(8)-向量化

本文介绍了向量及其在计算机领域的应用,包括文本向量化(Embedding)的概念和相似度计算方法(余弦距离、欧式距离)。重点讲解了向量数据库的作用和常见类型(如Qdrant、Milvus等),强调其与传统数据库的互补关系。通过LangChain4j框架展示了向量化三件套(EmbeddingModel、EmbeddingStore、EmbeddingSearchRequest)的实际应用,包括文本向量转换、存储和检索的完整流程。最后提供了一个基于SpringBoot和Qdrant的代码示例,演示如何实现文本向

u010803649的博客 1495

【无标题】ReaxFF拟合参数以及算法安装

ReaxFF拟合参数以及算法安装

zmzyzm的博客 1419

解决langchain4j与Qdrant向量维度不匹配问题

向量数据库是现代AI应用中的核心技术组件,其核心原理是通过数学方法计算高维向量的相似度。在实际工程中,不同版本的嵌入模型(如OpenAI的text-embedding-ada-002和text-embedding-3-large)可能产生不同维度的向量,当这些向量与Qdrant等向量数据库的预设维度不匹配时,就会出现类似“Length of vector a (0) must be equal to the length of vector b (1024)”的典型错误。这类问题常见于版本升级或混合技术栈场

508

VASP计算层错能(SFE)全攻略2

本文介绍了使用VASP计算纯镍(Ni)层错能(SFE)的具体步骤。首先构建Ni的FCC单胞并扩展为超胞,通过修改原子位置引入堆垛层错;随后分别计算完美晶体和含层错结构的能量;最后通过能量差与层错面积之比求得SFE值。计算需注意k点网格、截断能和超胞尺寸的收敛性测试,并推荐使用PAW赝势和ASE等工具辅助结构构建。

weixin_50519490的博客 1986

中科蓝讯Downloader配置实战:从软硬开关机到ANC降噪的完整指南

本文提供了中科蓝讯Downloader工具的详细配置实战指南。内容涵盖从基础的软硬开关机选择与配置,到核心的EQ音效调试、触摸按键与入耳检测优化,以及高阶的ANC降噪与电源管理设置。旨在帮助开发者快速掌握关键配置项,高效完成蓝牙耳机产品的功能调试与优化。

s4t5u6v7的博客 508

langchain4j-(8)-向量化实战:从概念到检索的完整链路解析

本文深入解析了langchain4j在向量化技术中的实战应用,从基础概念到完整检索链路。通过文本向量化、相似度计算及Qdrant向量数据库的集成,展示了如何构建高效的语义检索系统,并提供了性能优化和常见问题排查的实用技巧。

weixin_29056701的博客 163

国内合规开通ChatGPT Plus实操指南:银行卡绑卡与支付全解析

ChatGPT Plus 是 OpenAI 官方推出的高级订阅服务,基于 GPT-4o 多模态大模型提供语音交互、图像理解与长上下文处理能力。其核心使用前提在于完成合规的国际支付绑定,而非网络接入方式。技术原理上,OpenAI 采用 Stripe 支付网关进行风控校验,重点匹配银行跨境权限、卡片类型(仅支持 Visa/Mastercard/Amex 信用卡)、BIN 号段及地理位置一致性。该机制决定了95%的绑卡失败源于银行端配置缺失或卡片不兼容,而非网络问题。实际应用中,PayPal 作为中间支付层可显著

chuannaoxuan4674的博客 1970

LangChain4j 中文文档

欢迎!LangChain4j 的目标是简化将大语言模型集成到 Java 应用中的过程。它的实现方式如下:统一 API: 大语言模型提供商(如 OpenAI 或 Google Vertex AI)和嵌入(向量)存储(如 Pinecone 或 Milvus)都使用专有 API。LangChain4j 提供统一 API,避免你为每个提供商或存储分别学习和实现特定 API。想尝试不同的大语言模型或嵌入存储时,你可以轻松切换,而无需重写代码。LangChain4j 目前支持 20+ 个主流大语言模型提供商 和 30+

qq_43356685的博客 985

Python 爬虫实战:深入同花顺,抓取股票行情数据,助力投资决策

通过本次 Python 爬虫实战,我们成功地从同花顺抓取了股票行情数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分股票的数据,且未对股票的历史行情进行深入分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多股票的数据,并深入分析股票的历史行情走势、技术指标等,为投资者提供更有价值的数据支持。

u014481728的博客 5334

【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1314

springboot+langchain4j 实战Day2:Function Calling + 简易 RAG

LangChain4j 实战指南 目标:3 天内从零跑通 Java AI 应用开发,建立信心,再去补理论基础。 技术栈:Java 17+ / Maven / LangChain4j / 硅基流动免费的模型api/ 核心理念:先跑通,再理解。工程师的学习方式是动手 → 遇坑 → 理解原理。

qq_44909430的博客 263

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南

高效批量转换Java接口为MCP服务:降低重复劳动的实战指南

专注于编程、AI、人工智能等多个领域内容研究和分析 723

向量:深度学习的核心基石

本文系统介绍了向量在深度学习与机器学习中的核心作用。首先从数学本质、向量化编程、向量空间模型等角度阐述了向量的基本概念,指出其作为有序数字组在特征表示、模型参数和文本嵌入中的关键应用。随后通过LangChain4j与Qdrant向量数据库的实战示例,详细展示了从环境搭建、集合创建到向量存储与相似性检索的完整流程,包括本地all-MiniLM-L6-v2模型和阿里云text-embedding-v3两种向量生成方式的集成方法,并演示了带过滤条件的精确检索操作。文章强调向量作为连接理论与实践的桥梁,是理解现代大

suaizai_的博客 205

光学设计仿真软件:Code V_(8).场曲和色差校正

通过以上步骤和代码示例,用户可以更好地理解如何在Code V中进行场曲和色差的校正。这些技术不仅有助于提高光学系统的成像质量,还可以为后续的光学设计提供重要的参考。在实际应用中,用户可以根据具体需求选择合适的校正方法和优化策略,以达到最佳设计效果。

kkchenjj的博客 1784

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Day4-LangChain4j-向量数据库-检索增强RAG

关系型数据库MySQL,内存分布型数据库Redis,向量数据库Vector是向量或矢量的意思,一个是数学概念,另一个是物理的概念。Embedding Model:向量化模型,前面章节使用了ChatModel和StreamChatModel。概念:Embedding Model的工作原理是将文本、图像、和视频转换为向量的浮点数数组。这些向量旨在捕捉文本、图像和视频的含义。嵌入数组的长度称为向量的维度(Dimensionality)。指征特点:捕捉复杂的词汇关系(如语义相似性、同义词、多义词)

2401_83972487的博客 221

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RAG技术实战:从零搭建基于LangChain与向量数据库的智能问答系统

检索增强生成(RAG)是一种将信息检索与大型语言模型生成能力相结合的技术范式。其核心原理是通过向量化技术将外部知识库转换为语义向量,在用户提问时先进行相似性检索,再将检索到的相关上下文与问题一同提交给大语言模型生成答案。这项技术的核心价值在于有效缓解了大语言模型的幻觉问题,并使其能够利用最新、最准确的私有或领域特定数据。在工程实践中,RAG系统通常涉及文档加载、文本切片、向量化索引构建以及检索-生成流水线等关键环节。典型的应用场景包括企业知识库问答、智能客服系统和技术文档助手等。本文将以rag实战项目为例,

chutisun0039的博客 381

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

从零实践Embedding:文本向量化与语义搜索入门指南

在自然语言处理和人工智能领域,文本向量化是处理非结构化数据的核心技术。其原理是将文本映射为高维空间中的稠密向量,使语义相近的文本在向量空间中距离更近。这项技术的核心价值在于让计算机能够量化语义相似度,从而支持语义搜索、智能推荐、文本聚类等高级应用。通过使用预训练模型如Sentence-BERT,开发者可以快速生成文本向量,并利用余弦相似度等度量方法实现语义搜索。在实际工程实践中,Embedding技术是构建RAG系统和智能问答系统的基础,能够有效解决传统关键词匹配的语义缺失问题。本文通过具体代码示例,演示了

weixin_34184158的博客 377

深入理解Embedding:从词向量到语义搜索的核心原理与实践

在自然语言处理领域,词向量和语义表示是基础且核心的技术概念。其核心原理基于分布假说,通过神经网络模型将离散的文本符号映射到连续的向量空间中,使得语义相似的词或句子在空间中的位置相近。这一技术价值在于,它让计算机能够超越传统的关键词匹配,实现深层次的语义理解与计算。在实际应用场景中,语义搜索和RAG系统都依赖于高质量的Embedding来提升检索精度。本文以BERT和Sentence-BERT等模型为例,探讨了Embedding的生成机制、多义词处理以及如何通过余弦相似度衡量语义关联。针对工程实践,文章还涉及

weixin_34416649的博客 338

【Java AI】大模型应用开发:术语概念 + 技术栈

核心逻辑:用户提问 → 把问题向量化,从私有知识库检索相关文档片段 → 将检索片段+用户问题一起丢给LLM → LLM基于检索到的真实资料回答。整体阶段:基础概念 → API调用 → RAG知识库 → ToolCall工具调用 → Agent智能体 → 工程化生产落地 → 项目实战。通过工具调用:模型输出工具名称+参数,程序执行工具,再把结果塞回给大模型,生成最终回答。✅正确路线:普通对话 → RAG知识库 → Tool工具调用 → Agent智能体,循序渐进。核心:Java不做模型训练,做。

weixin_44823875的博客 374
上一篇: LLM-as-a-Judge:如何构建真正有效的评估器
下一篇: AI Agent 里的 Skill 到底是什么?看完这篇终于懂了
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值