Skip to main content
本指南介绍如何使用 Isaacus 的 LangChain 集成开始生成法律嵌入。

1. 设置您的账户

前往 Isaacus 平台 创建新账户。 注册完成后,添加付款方式以领取您的免费额度 添加付款方式后,创建新的 API 密钥 请妥善保管您的 API 密钥。创建后您将无法再次查看它,但不必担心,您随时可以生成新的密钥。

2. 安装 isaacus API 客户端

账户设置完成后,安装 Isaacus LangChain 集成包。
pip install langchain-isaacus

3. 嵌入文档

安装好 API 客户端后,让我们嵌入第一个法律查询和文档。 首先,您需要使用 API 密钥初始化客户端。您可以通过设置 ISAACUS_API_KEY 环境变量来实现,或者直接传入密钥,就像本示例中所做的那样。 我们将使用 Kanon 2 Embedder,这是截至 2025 年 10 月 20 日在大规模法律嵌入基准上全球最准确的法律嵌入模型。
from langchain_isaacus import IsaacusEmbeddings

# Create an Isaacus API client for Kanon 2 Embedder.
client = IsaacusEmbeddings(
    model="kanon-2-embedder",
    api_key="PASTE_YOUR_API_KEY_HERE",
    # dimensions=1792, # You may optionally wish to specify a lower dimension.
)
接下来,让我们获取一个要嵌入的法律文档。在本示例中,我们将使用 GitHub 服务条款
import isaacus

tos = isaacus.Isaacus().get(path="https://examples.isaacus.com/github-tos.md", cast_to=str)
我们希望根据一个关于 GitHub 服务条款的搜索查询来检索它。 为此,我们将首先使用 API 客户端的 .embed_documents() 方法嵌入文档。使用此方法表明我们正在嵌入文档(而非搜索查询),这对于确保嵌入针对检索(而非分类或句子相似度等其他任务)进行优化非常重要。
document_embedding = client.embed_documents(texts=[tos])[0]
现在,让我们嵌入两个搜索查询,一个明显与文档相关,另一个明显不相关。这次我们将使用 API 客户端的 .embed_query() 方法,表明我们正在嵌入搜索查询。
relevant_query_embedding = client.embed_query(text="What are GitHub's billing policies?")
irrelevant_query_embedding = client.embed_query(text="What are Microsoft's billing policies?")
为了评估查询与文档的相关性,我们可以计算查询嵌入与文档嵌入之间的余弦相似度。 余弦相似度衡量两组数字的相似程度(具体来说,是内积空间中两个向量之间夹角的余弦值)。理论上,它的范围从 1-111,其中 11 表示向量完全相同,00 表示向量正交(即完全不相似),1-1 表示向量方向完全相反。但在实践中,文本嵌入的余弦相似度通常在 0011 之间(因为嵌入通常为非负值)。 Isaacus 的嵌入器经过优化,使得其生成的嵌入的余弦相似度大致对应于原始文本在含义上的相似程度。然而,与 Isaacus 的通用分类器不同,Isaacus 嵌入器的分数尚未经过校准以解释为概率,仅作为相对的相似度度量,使其最适合用于对搜索结果进行排名。 为方便起见,本 Python 示例使用 numpydot 函数计算嵌入的点积(由于我们所有的嵌入都经过 L2 归一化,这等价于余弦相似度)。如果您愿意,可以使用其他库计算嵌入的余弦相似度(例如,通过 torch.nn.functional.cosine_similarity 使用 torch),或者您可以自己实现。
import numpy as np

relevant_similarity = np.dot(relevant_query_embedding, document_embedding)
irrelevant_similarity = np.dot(irrelevant_query_embedding, document_embedding)

print(f"Similarity of relevant query to the document: {relevant_similarity * 100:.2f}")
print(f"Similarity of irrelevant query to the document: {irrelevant_similarity * 100:.2f}")
输出结果应类似如下:
Similarity of relevant query to the document: 52.87
Similarity of irrelevant query to the document: 24.86
如您所见,相关查询与文档的相似度分数远高于不相关查询,表明我们的嵌入器成功捕获了文本的语义含义。 就这样!您已成功使用 Isaacus API 和 LangChain 嵌入了法律文档和查询。