首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值

从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值 一、引言 在信息检索领域,搜索技术的不断演变从根本上改变了我们获取信息的方式。...,将语义上相似的词语映射到更接近的位置。...语义优化与索引:Chroma 在存储和索引上进行了优化,可以快速处理大规模数据,支持动态扩展和高并发访问。...欧几里得距离:也叫欧氏距离,在‌n维空间​中两个点之间的真实距离。这个概念是由古希腊数学家欧几里得提出的,用于计算在欧几里得空间中两点间的直线距离。...在小数据集或特定字段(如名称、产品编号)查询中表现良好。 局限性: 语义欠缺:模糊搜索无法识别词语背后的语义。例如,“气候变化”和“全球变暖”在模糊搜索中并不会被认为是相关的。

7710

实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。(递归或者非递归实现)

实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。(递归或者非递归实现) 简介:实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。...(递归或者非递归实现) 算法思路 算法思路 二分查找是一种在有序数组中查找特定元素的搜索算法。该算法对数组进行比较次数的上限是 O(log n)。...则在左边的区间中查找 return binarySearch(arr, mid + 1, r, x); // 否则在右边的区间中查找 } return -1; // 如果数组中不存在目标元素...[0]); // 数组长度为n int x = 5; // 要查找的元素x int result = binarySearch(arr, 0, n - 1, x); // 调用二分搜索函数...); // 输出结果 } } 同样地,在Java中我们也使用递归方式进行查找。

3500
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置

    ‍个人主页: 才疏学浅的木子 ‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 ‍♂️ 本文来自专栏: 算法 算法类型:Hot100题 每日三题 寻找两个正序数组的中位数 搜索旋转排序数组...在排序数组中查找元素的第一个和最后一个位置 寻找两个正序数组的中位数 解法一 暴力 class Solution { public double findMedianSortedArrays...if((m+n) % 2 == 0)return ((double)left+right)/2; else return right; } } 搜索旋转排序数组...= mid+1; }else if(target 在[a1,...mid]区间 或者在[b1,b2..bn]区间...} } return -1; } } 在排序数组中查找元素的第一个和最后一个位置 class Solution { public int[] searchRange

    1.3K20

    JavaScript集合引用类型 - Array

    (option===undefined);//true,true,true,true,true } 数组索引 数组元素的数量保存在length属性中,通过修改length可以从数组末尾删除/添加元素 let...(0);//重置 //与fill()不同,copyWithin()会按照指定范围浅复制数组中的部分内容,然后插入到指定索引开始的位置 let ints, reset=()=>ints=[1,2,3,4,5,6,7...]; reset(); console.log(ints.copyWithin(2, 0));//从ints中复制索引0开始的内容,插入到索引2开始的位置, [1, 2, 1, 2, 3, 4, 5]...reset(); console.log(ints.copyWithin(2, 0, 3));//从ints中复制 索引0开始到3结束 的内容,插入到索引2开始的位置, [1, 2, 1, 2, 3,..."7", "8", 3, 4] 搜索和位置方法 es提供两类搜索数组的方法:按严格相等搜索 和按断言函数搜索 3个严格相等的搜索方法 indexOf(), lastIndexOf()返回元素所在的索引

    53210

    【剑指offer:在排序数组中查找数字】搜索左右边界:从两边向中间、二分查找

    题目描述:统计一个数字在排序数组中出现的次数。 这题要解决的核心问题就是:搜索数字出现的左右边界。边界的差值,就是出现次数。...解法 1: 从两边向中间 思路比较简单: 从数组左侧向右遍历,遇到目标数字 target,停止,记录下标 left 从数组右侧向左遍历,遇到目标数字 target,停止,记录下标 right 如果 right...解法 2: 二分查找(巧妙) 二分查找一般用来查找数字在有序数组中是否出现过。进一步想,它可以用来不断在子序列中搜索对应数字。...所以,我们就可以用它来向左边子序列中不断搜索,确认左边界;同样的思路,确认右边界。 这可能还是有点抽象,举个 ?。以数组 2、3、3、3、2 为例,我们要搜索数字 3 的左右边界。...假设我们先尝试搜索左边界下标 start。 按照二分法思路,arr[mid] = arr[2] = 3,更新 start 为 2,同时缩小搜索范围到 [0, mid - 1] = [0, 1]。

    1.5K20

    这些题都不会,面试你怎么可能过?

    下图是一个大小为 4 的简单数组,包含几个元素( 1 , 2 , 3,4)。 ? 每个数据元素会被分配一个正的数值,叫作“索引”,它对应该元素在数组中的位置。...以下是两种数组: 一维数组(如上所示) 多维数组(数组的数组) 数组的基本操作: Insert——在给定索引位置插入一个元素 Get——返回给定索引位置的元素 Delete——删除给定索引位置的元素 Size...一个边可能包含权重/成本,显示从顶点 x 到 y 所需的成本。 ?...其提供非常快速的检索功能,常用于搜索字典中的单词,为搜索引擎提供自动搜索建议,甚至能用于IP路由选择。 下面展示了 “top” “thus” 和 “their” 这三个词是如何存储在字典树中的: ?...常见的字典树面试问题: 计算字典树中的总字数 打印存储在字典树中的所有单词 使用字典树对数组的元素进行排序 使用字典树从字典中形成单词 构建一个T9字典 哈希表 散列是一个用于唯一标识对象并在一些预先计算的唯一索引

    1.1K20

    分享 7 个鲜为人知的JS数组方法

    1.copyWithin() Array copyWithin() 将数组的一部分复制到同一数组中的另一个位置并返回它,而不增加其长度。...3.reduceRight() 与reduce()类似,但回调是从右到左而不是从左到右: 这是reduceRight() 的另一个很好的场景: 4. findLast() ES13 中的新增功能:从最后一个元素开始查找数组项...非常适合从结束位置搜索比使用 find() 产生更好性能的情况: 例子: 这是可行的,但由于我们的目标对象更接近数组的尾部,findLast() 应该运行得更快: findLast() 的另一个用例是当我们必须从末尾专门搜索数组以获得正确的元素时...例如,如果我们想查找数字列表中的最后一个偶数,find() 将产生完全错误的结果: 但 findLast() 将从末尾开始搜索并为我们提供正确的项目。...我们可以将第二个参数传递给lastIndexOf()来指定数组中的一个索引,在该索引之后它应该停止搜索字符串: 7. flatMap() flatMap() 方法使用给定的回调函数转换数组,然后将转换后的结果展平一级

    20910

    数组方法整理

    在只有一个参数的情况下, slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。...不影响原数组 数组搜索 indexOf()和 lastIndexOf() 参数:要查找的项和(可选的)表示查找起点位置的索引。可以是负数,它代表相对于数组末尾的个数。...参数为NaN时返回-1,所以不能搜索数组中的NaN。 这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。 比较参数和数组项时,会使用全等操作符。...回调函数参数:前一个值、当前值、项的索引和数组对象。 reduce()从数组的第一项开始,逐个遍历到最后。 reduceRight()从数组的最后一项开始,向前遍历到第一项。...参数: target(必须): 从该位置开始替换数据; start(可选):从该位置开始读取原数组数据; end(可选):复制到该位置的前一个位置截止。

    1.1K40

    JavaScript中的Array对象介绍及方法

    Array 对象 Array 对象用于在变量中存储多个值: var cars = [“Saab”, “Volvo”, “BMW”]; 第一个数组元素的索引值为 0,第二个索引值为 1,以此类推。...Array 对象方法 方法 描述 concat() 连接两个或更多的数组,并返回结果。 copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中。...indexOf() 搜索数组中的元素,并返回它所在的位置。 isArray() 判断对象是否为数组。 join() 把数组的所有元素放入一个字符串。...keys() 返回数组的可迭代对象,包含原始数组的键(key)。 lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置。...sort() 对数组的元素进行排序。 splice() 从数组中添加或删除元素。 toString() 把数组转换为字符串,并返回结果。

    56230

    js string字符串常用方法

    这意味着,indexOf()会从这个参数指定的位置开始向字符串末尾搜索,忽略该位置之前的字符;lastIndexOf()则会从这个参数指定的位置开始向字符串开头搜索,忽略该位置之后直到字符串末尾的字符:...如果传入第二个参数,则意味着这两个方法会从指定位置向着字符串末尾搜索,忽略该位置之前的所有字符; endsWith()方法接收可选的第二个参数,表示应该当作字符串末尾的位置。...RegExp 对象的 exec()方法返回的数组是一样的:第一个元素是与整 个模式匹配的字符串,其余元素则是与表达式中的捕获组匹配的字符串(如果有的话)。...search()方法唯一的参数与 match()方法一样:正则表达式字符串或 RegExp 对象。这个方法返回模式第一个匹配的位置索引,如果没找到则返回-1。.../这里,search(/at/)返回 1,即"at"的第一个字符在字符串中的位置 replace() 这个方法接收两个参数,第一个参数可以是一个 RegExp 对象或一个字符串(这个字符串不会转换为正则表达式

    2.3K40

    学习算法必须要了解的数据结构

    下例是一个大小为4的简单数组: ? 每个数据元素都会分配一个称为索引值,该值对应于该项目在数组中的位置。大多数语言将数组的起始索引定义为0。...检测链表中的循环 从链接列表中的末尾返回第N个节点 从链表中删除重复项 图 图是一组以网络形式相互连接的节点。...边可以包含权重/成本,显示从顶点x到y遍历所需的成本。 ?...哈希表 哈希是一个用于唯一标识对象并将每个对象存储在一些预先计算的唯一索引(称为“密钥”)的过程。...因此,该对象以“键值”对的形式存储,并且这些项的集合被称为“字典”。可以使用该键搜索每个对象。基于哈希有不同的数据结构,但最常用的数据结构是哈希表。哈希表通常使用数组实现。

    2.2K20

    Java集合:关于 Vector 的内容盘点

    extends E> c) 此方法将指定Collection中的所有元素插入到此Vector中的指定位置 void addElement(E obj) 此方法将指定的组件添加到此向量的末尾,将其大小增加...> c) 如果此Vector包含指定Collection中的所有元素,则此方法返回true void copyInto(Object[] anArray) 此方法将此向量的组件复制到指定的数组中 E elementAt...(Object elem, int index) 搜索给定参数的第一个匹配项,从 index 处开始搜索,并使用 equals 方法测试其相等性 void insertElementAt(E obj,...int index) 将指定对象作为此向量中的组件插入到指定的 index 处 boolean isEmpty() 测试此向量是否不包含组件 E lastElement() 返回此向量的最后一个组件 int...lastIndexOf(Object elem) 返回指定的对象在此向量中最后一个匹配项的索引 int lastIndexOf(Object elem, int index) 向后搜索指定的对象,从指定的索引处开始搜索

    53210

    准备下次编程面试前你应该知道的数据结构

    下图是一个大小为 4 的简单数组,包含几个元素( 1 , 2 , 3,4)。 每个数据元素会被分配一个正的数值,叫作“索引”,它对应该元素在数组中的位置。...以下是两种数组: 一维数组(如上所示) 多维数组(数组的数组) 数组的基本操作: Insert——在给定索引位置插入一个元素 Get——返回给定索引位置的元素 Delete——删除给定索引位置的元素 Size...如果有新人来,他们是从末尾加入队列,而不是在开头——站在前面的人将先买到票然后离开队列。...一个边可能包含权重/成本,显示从顶点 x 到 y 所需的成本。...常见的字典树面试问题: 计算字典树中的总字数 打印存储在字典树中的所有单词 使用字典树对数组的元素进行排序 使用字典树从字典中形成单词 构建一个T9字典 哈希表 散列是一个用于唯一标识对象并在一些预先计算的唯一索引

    1.2K10

    js数组常用方法总结

    输入:第一个参数为指定插入或删除的起始位置,第二个参数为要删除的个数。之后的参数表示需要插入到数组中的元素  输出:返回一个由删除元素组成的数组。 ...},10); 8 console.log(result); // 41 15、indexOf()和lastIndexOf()  功能:搜索整个数组中具有给定值得元素,返回找到的第一个元素的索引或者如果没有找到就返回...输出:索引值 1 // indexOf() 两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。没找到返回-1....返回查找项的索引值 2 // lastIndexOf() 从数组的末尾开始向前查找。...输入:第一个参数(从该位置开始替换数据);第二个参数可选(从该位置开始读取数据,默认为0,负值表示倒数);第三个参数(到该位置前停止读取,默认为数组长度)  输出:返回当前替换后的数组。

    5K30

    最全 JavaScript Array 方法 详解

    some() 在遍历时,元素范围已经确定,在遍历过程中添加的元素,不会加入到遍历的序列中。...可选 「注意」 filter 不会改变原数组,它返回过滤后的新数组。 filter() 在遍历时,元素范围已经确定,在遍历过程中添加的元素,不会加入到遍历的序列中。...可选 「注意」 map不修改调用它的原数组本身 map() 在遍历时,元素范围已经确定,在遍历过程中添加的元素,不会加入到遍历的序列中。...可选 ❝❞ 如果索引大于或等于数组的长度,则返回-1 如果提供的索引值为负数,则将其视为距数组末尾的偏移量 如果提供的索引为负数,仍然从前到后搜索数组 如果提供的索引为 0,则将搜索整个数组。...❝❞ 对象引用(而不是实际对象):concat将对象引用复制到新数组中。

    1.1K20

    js 数组详细操作方法及解析

    定义: 在当前数组内部,将指定位置的成员复制到其他位置,并返回这个数组。...start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。 end(可选):到该位置前停止读取数据,默认等于数组长度。使用负数可从数组结尾处规定位置。...定义: 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,且原数组不会被修改。...end(可选):索引数值(不包括),接受负值,在该索引处前结束提取原数组元素,默认值为数组末尾(包括最后一个元素)。...正值超过数组长度,数组不会被搜索,返回false。负值绝对值超过长数组度,重置从0开始搜索。

    1.3K10

    前端入门11-JavaScript语法之数组声明正文-数组

    多维数组定义 但由于数组在 JavaScript 中也是对象,数组中的元素也可以是数组,因此可以用数组的数组来实现多维数组: ?...正数 }); a.join(); //输出:0,1,3,22, concat() 将参数传入的数值拼接到数组末尾,但不是在原数组上操作,而是会新建一个数组,此方法的拼接操作不会影响到原数组内容。...a:[1] 第一个参数选择要操作的起始位置,第二个参数指定要删除的元素个数,如果只有一个参数,那么就删除从起始位置到末尾的元素。...reduceRight 和 reduce 用途,用法一致,唯一的区别,它是从数组的末尾往前一个个处理元素的。一个左到右处理数组,一个右到左。...indexOf() 和 lastIndexOf() 在数组内搜索指定元素,返回找到的第一个元素的索引位置,没有找到返回 -1 两个方法,一个从左往右寻找,一个从右往左寻找。

    93920

    JavaScript的数组常规操作

    JavaScript的数组操作 JavaScript数组也是对象,它使用单一的变量存储一系列的值。 数组和对象的区别 在JavaScript中,数组必须使用数字索引,对象可以使用命名索引。...从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。 未找到项目返回-1。 项目多次出现,返回第一次出现的位置。...从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到开头。...target(必需):从该位置开始替换数据。如果为负值,表示倒数。 start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。...end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。

    1.5K10
    领券