In practice, implementing the suggested architecture is quite straightforward: Given an auxiliary knowledge base \(\mathcal{B}_{\mathcal{Q}}\) and a pre-trained embedding model \(\mathcal{M}_{e}\), we create a dense vector representation (embedding) per document \(b\in\mathcal{B}_{\mathcal{Q}}\) and store these in a vector store. Upon receiving a new query \(q\), we use its embedding, \(\mathcal{M}_{e}(q)\), to retrieve \(q\)'s top-\(K\) closest neighbors, \(\mathbf{b}_{q}=\{b_{k}\}_{1}^{K}\), according to dot-product ranking. We then update \(q\) to be \(\tilde{q}=\mathbf{b}_{q}\|q\), where \(\|\) denotes string concatenation. Finally, we return \(\mathcal{M}(\tilde{q})\) as the model's output.
실제로 제안된 아키텍처를 구현하는 것은 매우 간단합니다. 보조 지식 베이스 \(\mathcal{B}_{\mathcal{Q}}\)와 pre-trained embedding 모델 \(\mathcal{M}_{e}\)가 주어지면, 문서 \(b\in\mathcal{B}_{\mathcal{Q}}\)당 고밀도 벡터 표현(embedding)을 생성하고 이를 벡터 저장소에 저장합니다. 새로운 쿼리 \(q\)가 수신되면, dot-product ranking에 따라 \(q\)의 embedding인 \(\mathcal{M}_{e}(q)\)를 사용하여 \(q\)의 가장 가까운 상위 \(K\)개의 이웃인 \(\mathbf{b}_{q}=\{b_{k}\}_{1}^{K}\)를 검색합니다. 그런 다음 \(q\)를 \(\tilde{q}=\mathbf{b}_{q}\|q\)로 업데이트하며, 여기서 \(\|\)는 문자열 연결을 나타냅니다. 마지막으로, 모델의 출력으로 \(\mathcal{M}(\tilde{q})\)를 반환합니다.
실제로 제안된 아키텍처를 구현하는 것은 매우 간단합니다. 보조 지식 베이스 \(\mathcal{B}_{\mathcal{Q}}\)와 사전 학습된 임베딩 모델 \(\mathcal{M}_{e}\)가 주어지면, 문서 \(b\in\mathcal{B}_{\mathcal{Q}}\)당 고밀도 벡터 표현(임베딩)을 생성하고 이를 벡터 저장소에 저장합니다. 새로운 쿼리 \(q\)가 수신되면, 점-제품 순위에 따라 \(q\)의 임베딩인 \(\mathcal{M}_{e}(q)\)를 사용하여 \(q\)의 가장 가까운 상위 \(K\)개의 이웃인 \(\mathbf{b}_{q}=\{b_{k}\}_{1}^{K}\)를 검색합니다. 그런 다음 \(q\)를 \(\tilde{q}=\mathbf{b}_{q}\|q\)로 업데이트하며, 여기서 \(\|\)는 문자열 연결을 나타냅니다. 마지막으로, 모델의 출력으로 \(\mathcal{M}(\tilde{q})\)를 반환합니다.