Jina 8K 上下文窗口嵌入¶
这里我们展示如何使用支持 8k 上下文长度并与 text-embedding-ada-002
相当的 jina-embeddings-v2
%pip install llama-index-embeddings-huggingface
%pip install llama-index-embeddings-huggingface-api
%pip install llama-index-embeddings-openai
import nest_asyncio
nest_asyncio.apply()
设置嵌入模型¶
from llama_index.embeddings.huggingface import (
HuggingFaceEmbedding,
)
from llama_index.embeddings.huggingface_api import (
HuggingFaceInferenceAPIEmbedding,
)
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import Settings
# base model
# model_name = "jinaai/jina-embeddings-v2-base-en"
# small model
model_name = "jinaai/jina-embeddings-v2-small-en"
# download model locally
# note: you need enough RAM+compute to run this
embed_model = HuggingFaceEmbedding(
model_name=model_name, trust_remote_code=True
)
# use inference API on Hugging Face (though you might run into rate limit issues)
# embed_model = HuggingFaceInferenceAPIEmbedding(
# model_name="jinaai/jina-embeddings-v2-base-en",
# )
# we set chunk size to 1024 for now, you can obviuosly set it to much bigger
Settings.embed_model = embed_model
Settings.chunk_size = 1024
设置 OpenAI Ada 嵌入作为比较¶
embed_model_base = OpenAIEmbedding()
设置索引进行测试¶
我们将使用标准的 Paul Graham 示例。
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
reader = SimpleDirectoryReader("../data/paul_graham")
docs = reader.load_data()
index_jina = VectorStoreIndex.from_documents(docs, embed_model=embed_model)
index_base = VectorStoreIndex.from_documents(
docs, embed_model=embed_model_base
)
查看结果¶
查看使用 Jina-8k 与 Replicate 检索到的结果
from llama_index.core.response.notebook_utils import display_source_node
retriever_jina = index_jina.as_retriever(similarity_top_k=1)
retriever_base = index_base.as_retriever(similarity_top_k=1)
retrieved_nodes = retriever_jina.retrieve(
"What did the author do in art school?"
)
for n in retrieved_nodes:
display_source_node(n, source_length=2000)
节点 ID: 921cc179-312f-4ee2-a760-3cccd27470d9
相似度 0.7612087686435924
文本:
艺术家拥有标志性风格并非总是如此,但这通常是买家为此类作品支付高价的原因。[6] 也有很多认真的学生:那些在高中时“会画画”的孩子,现在来到了这个被认为是全国最好的艺术学校,希望学得更好。他们往往对在 RISD 发现的东西感到困惑和沮丧,但他们坚持了下来,因为绘画就是他们所做的事情。我不是高中时会画画的孩子之一,但在 RISD,我肯定比那些追求标志性风格的人更接近他们的群体。
我在 RISD 上的色彩课学到了很多,但除此之外,我基本上是自学绘画,而且这是免费的。所以在 1993 年,我辍学了。我在普罗维登斯待了一段时间,然后我的大学朋友南希·帕梅特帮了我一个大忙。她母亲在纽约拥有的一栋楼里有一个受租金管制的公寓空了出来。我想要吗?它比我现在的住处好不了多少,而且纽约应该是艺术家聚集的地方。所以,是的,我想要![7] Asterix 漫画开始时会放大罗马高卢的一个小角落,结果发现那里不受罗马人的控制。你可以在纽约市的地图上做类似的事情:如果你放大上东区,会发现有一个小角落不富裕,或者至少在 1993 年不富裕。它叫 Yorkville,那是我的新家。现在我是一名纽约艺术家——从严格的技术意义上讲,就是画画并在纽约生活。
我对钱感到紧张,因为我能感觉到 Interleaf 正在走下坡路。自由职业的 Lisp 黑客工作非常罕见,而且我不想用另一种语言编程,在当时如果幸运的话,那意味着 C++。因此,凭借我对财务机会敏锐的嗅觉,我决定再写一本关于 Lisp 的书。这将是一本畅销书,一本可以作为教科书的书。我幻想着靠版税节俭生活,然后把我的全部...
我对钱感到焦虑,因为我能感觉到 Interleaf 正在走下坡路。自由职业的 Lisp 编程工作非常少见,而且我不想不得不使用另一种语言编程,在那个时候,如果我运气好的话,那就会是 C++。所以凭借我那捕捉经济机会的敏锐嗅觉,我决定再写一本关于 Lisp 的书。这会是一本受欢迎的书,一本可以用作教科书的书。我想象自己靠着版税节俭度日,并把所有的...
retrieved_nodes = retriever_base.retrieve("What did the author do in school?")
for n in retrieved_nodes:
display_source_node(n, source_length=2000)
节点 ID: 0abf44f2-94bd-421f-9ebd-5b50f4de37f0
相似度 0.8352482505756655
文本:
我做过的事
2021 年 2 月
在上大学之前,我在学校之外主要做了两件事:写作和编程。我不写随笔。我写的是初学者那时应该写的,可能现在也一样:短篇小说。我的故事写得很糟糕。几乎没有什么情节,只有情感强烈的角色,我以为这让它们显得有深度。
我第一次尝试编写程序是在我们学区用于“数据处理”的 IBM 1401 上。那是我读 9 年级的时候,所以我当时 13 或 14 岁。学区的这台 1401 恰好在我们初中地下室里,我和朋友 Rich Draves 获准使用它。那里就像一个迷你的邦德反派巢穴,所有这些看起来像外星机器的设备——CPU、磁盘驱动器、打印机、读卡器——都放在高架地板上,在明亮的荧光灯下。
我们使用的语言是 Fortran 的早期版本。你必须把程序打在穿孔卡片上,然后把它们堆叠在读卡器里,按下按钮把程序加载到内存里运行。结果通常是在那个响亮得出奇的打印机上打印出一些东西。我对 1401 感到困惑。我不知道能用它做什么。事后看来,我也确实做不了多少。程序的唯一输入形式是存储在穿孔卡片上的数据,而我没有任何存储在穿孔卡片上的数据。唯一的其他选择是做一些不依赖任何输入的事情,比如计算圆周率的近似值,但我懂得的数学不足以做任何那种有趣的事情。所以我写不出任何能做多少事的程序,也就不足为奇了。我最清晰的记忆是当我得知程序可能不会终止的那一刻,当时我的一个程序就没有终止。在没有分时操作的机器上,这既是技术错误,也是社交错误,数据中心经理的表情清楚地表明了这一点。
有了微型计算机,一切都变了。现在你可以...