Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Büyük belgeleri daha küçük öbeklere bölmek, sohbet tamamlama ve ekleme modellerinin en yüksek belirteç giriş sınırları altında kalmanıza yardımcı olabilir. Örneğin, Azure OpenAI text-embedding-3-small modeli için giriş metninin maksimum uzunluğu 8.191 belirteçtir. Her belirtecin yaygın OpenAI modelleri için dört karakter uzunluğunda olduğu düşünüldüğünde, bu üst sınır yaklaşık 6.000 sözcük metinle eşdeğerdir. Eklemeler oluşturmak için bu modelleri kullanıyorsanız, giriş metninin sınırın altında kalması kritik önem taşır.
Sohbet tamamlama modelleri aynı giriş belirteci kısıtlamalarına sahiptir, bu nedenle öbekleme, artırılmış oluşturma (RAG) veya aracılı alma için de yararlıdır. İçeriğinizi öbekler halinde bölümleme, giriş belirteci gereksinimlerini karşılamanıza yardımcı olur ve kesme nedeniyle veri kaybını önler.
Azure AI Search'te içerik öbekleme ve vektör araması kullanıyorsanız öbeklenmiş içeriği vektörleştirmeye yönelik yerleşik çözümler bulunur. Yerleşik yaklaşım, metin bölmeyi ve ekleme oluşturmayı sağlayan yerleşik dizin oluşturuculara ve beceri kümelerine bağımlıdır. Tümleşik vektörleştirmeyi kullanamıyorsanız, bu makalede içeriğinizi öbeklemeyle ilgili bazı alternatif yaklaşımlar açıklanmaktadır.
İpucu
Eğer içeriği etkin duyusal işleme için parçalara ayırıyorsanız, çeşitli bilgi kaynakları içeriğinizi parçalara ayıran ve opsiyonel olarak vektörleştiren bir tam endeksleyici işlem hattı oluşturabilir. Dizin oluşturucu, veri kaynağı tanımı, beceri kümesi ve bilgi kaynağı tanımınızdaki bilgilere göre sizin için oluşturulur. Bu özelliğe sahip bilgi kaynakları Azure blobu ve OneLake'i içerir.
Yaygın öbekleme teknikleri
Öbekleme, yalnızca kaynak belgeler modellerin izin verdiği maksimum giriş boyutunu aşıyorsa gereklidir, fakat içerik tek bir vektör olarak kötü temsil ediliyorsa da yararlıdır. Çok sayıda farklı alt konuyu kapsayan bir wiki sayfası düşünün. Tüm sayfa model giriş gereksinimlerini karşılayacak kadar küçük olabilir, ancak daha ince bir dilimde öbeklerseniz daha iyi sonuçlar alabilirsiniz.
Dizin oluşturucular ve beceriler kullanıyorsanız yerleşik özelliklerle ilişkili bazı yaygın parçalama teknikleri aşağıdadır.
| Yaklaşım | Kullanım | Yerleşik işlevsellik |
|---|---|---|
| Sabit boyutlu öbekler | Anlamsal olarak anlamlı paragraflar (örneğin, 200 sözcük veya 600 karakter) için yeterli olan ve bazı çakışmalara (örneğin, içeriğin 10-15%) izin veren sabit bir boyut tanımlayın; vektör oluşturucuları eklemek için giriş olarak iyi öbekler üretebilir. | Metin Bölme becerisi, sayfalara göre bölme (karakter uzunluğuna göre tanımlanır) |
| İçerik özelliklerine göre değişken boyutlu öbekler | Veri tabanlı tümce sonu noktalama işaretlerini, satır sonu işaretlerini veya doğal dil işleme (NLP) kitaplıklarındaki belge yapısını algılayan özellikleri kullanarak bölümleme. HTML veya Markdown gibi gömülü biçimlendirmeler, bölümlere göre verileri öbeklemek için kullanılabilecek başlık söz dizimine sahiptir. | Belge Düzeni becerisi veya Metin Bölme becerisi (cümlelere göre bölme). |
| Anlamsal öbekler | İçeriği tümceler ve paragraflar arasında bağlam ve anlam ilişkilerini koruyan anlamlı birimlere ayırın. Bu yaklaşım, semantik tutarlılığı daha iyi koruyan ve sayfa sınırlarına yayabilen öbekler oluşturur. | Azure İçerik Anlama becerisi (anlamsal öbekleme, markdown çıktısı ile) |
| Özel birleşimler | Sabit ve değişken boyutlu öbeklerin birleşimini kullanın veya bir yaklaşımı genişletin. Örneğin, büyük belgelerle ilgilenirken değişken boyutlu öbekler kullanabilir, ancak bağlam kaybını önlemek için belge başlığını belgenin ortasındaki öbeklere de ekleyebilirsiniz. | Hiç kimse |
| Belge ayrıştırma | Dizin oluşturucular, daha büyük kaynak belgeleri dizin oluşturma için daha küçük arama belgelerine ayrıştırabilir. Açıkça belirtmek gerekirse, bu yaklaşım öbekleme değildir, ancak bazen aynı hedefe ulaşabilir. | Markdown blobları ve dosyaları dizine ekle, bire çok dizine ekle veya JSON blobları ve dosyaları dizine ekle |
İçerik çakışması ile ilgili dikkat edilmesi gerekenler
Verileri sabit boyuta göre öbeklediğinizde, öbekler arasında az miktarda metnin çakışması süreklilik ve bağlamın korunmasına yardımcı olabilir. 512 belirteçlik (yaklaşık 2.000 karakter) bir öbek boyutuyla başlamanızı ve %25'lik başlangıç örtüşmesiyle başlamanızı öneririz, ki bu da 128 belirteçe eşittir. Bu çakışma, aşırı yineleme olmadan öbekler arasında daha sorunsuz geçişler sağlar.
En uygun çakışma, içerik türünüz ve kullanım örneğine bağlı olarak değişebilir. Örneğin, yüksek oranda yapılandırılmış veriler daha az çakışma gerektirebilirken, konuşma metni veya anlatı metni daha fazla avantaj sağlayabilir.
Verilerin öbeklenmesi için faktörler
Verileri öbekleme söz konusu olduğunda şu faktörleri düşünün:
Belgelerinizin şekli ve yoğunluğu. Sağlam metin veya pasajlara ihtiyacınız varsa, cümle yapısını koruyan daha büyük öbekler ve değişken öbekler daha iyi sonuçlar verebilir.
Kullanıcı sorguları: Daha büyük öbekler ve çakışan stratejiler, belirli bilgileri hedefleyen sorgular için bağlam ve anlam zenginliğini korumaya yardımcı olur.
Büyük Dil Modelleri 'nin (LLM) öbek boyutu için performans yönergeleri vardır. Kullandığınız tüm modeller için en uygun öbek boyutunu bulun. Örneğin, özetleme ve ekleme için modeller kullanıyorsanız, her ikisi için de uygun olan en uygun öbek boyutunu seçin.
Öbekleme iş süreçlerine nasıl entegre edilir?
Büyük belgeleriniz varsa, büyük metinleri bölen dizin oluşturma ve sorgu iş akışlarına bir öbekleme adımı ekleyin. Tümleşik vektörleştirme kullanılırken, Metin Bölme becerisini kullanan varsayılan bir öbekleme stratejisi yaygındır. Özel bir beceri kullanarak özel bir öbekleme stratejisi de uygulayabilirsiniz. Özel beceri kullanarak anlamsal öbekleme örneği için bu kod başvurusuna bakın. Parçalara ayırma sağlayan bazı dış kitaplıklar şunlardır:
Çoğu kitaplık, sabit boyut, değişken boyut veya bir birleşim için yaygın öbekleme teknikleri sağlar. Bağlamın korunması için, her parçadaki az miktarda içeriği çoğaltan bir örtüşme de belirtebilirsiniz.
Öbekleme örnekleri
Aşağıdaki örneklerde öbekleme stratejilerinin NASA'nın Gece Dünya'sı e-kitabı PDF dosyasına nasıl uygulandığı gösterilmektedir.
Metin Bölme beceri örneği
Metin Bölme becerisi aracılığıyla tümleşik veri öbekleme özelliği genel olarak kullanılabilir.
Bu bölümde, beceri temelli bir yaklaşım ve Metin Bölme beceri parametreleri kullanılarak yerleşik veri öbekleme açıklanmaktadır.
Bu örnek için örnek bir not defteri azure-search-vector-samples deposunda bulunabilir.
İçeriği daha küçük parçalara ayırmak için ayarlayın textSplitMode :
-
pages(varsayılan). Öbekler birden çok cümleden oluşur. -
sentences. Öbekler birer cümleden oluşur. "Cümle" kavramı, dil ile ilişkilidir. İngilizcede,.veya!gibi standart cümle bitiş noktalama işaretleri kullanılır. Dil,defaultLanguageCodeparametresi ile kontrol edilir.
pages parametresi ek parametreler ekler:
-
maximumPageLengthher öbekteki en fazla 1 karakter veya belirteç 2 sayısını tanımlar. Metin bölücü tümceleri bölmekten kaçındığından, gerçek karakter sayısı içeriğe bağlıdır. -
pageOverlapLength, bir sonraki sayfanın başında önceki sayfanın sonundan kaç karakterin dahil olduğunu tanımlar. Ayarlanırsa, bu en fazla sayfa uzunluğunun yarısından az olmalıdır. -
maximumPagesToTakebir belgeden kaç sayfa / öbek alınacak olduğunu tanımlar. Varsayılan değer 0'dır ve bu da belgedeki tüm sayfaları veya öbekleri almak anlamına gelir.
1 Karakterler belirtecin tanımına uymuyor. LLM tarafından ölçülen belirteç sayısı, sabit boyutlu karakterle Metin Bölme becerisi tarafından ölçülen karakter boyutundan farklı olabilir.
2 Belirteç öbekleme , 2025-11-01-preview sürümünde kullanılabilir ve belirteç oluşturucu ve öbekleme sırasında bölünmemesi gereken belirteçleri belirtmek için ek parametreler içerir.
Aşağıdaki tabloda, parametre seçiminin Gece e-kitabındaki Dünya'dan toplam öbek sayısını nasıl etkilediği gösterilmektedir:
textSplitMode |
maximumPageLength |
pageOverlapLength |
Toplam Öbek Sayısı |
|---|---|---|---|
pages |
1000 | 0 | 172 |
pages |
1000 | 200 | 216 |
pages |
2000 | 0 | 85 |
pages |
2000 | beş yüz | 113 |
pages |
5.000 | 0 | 34 |
pages |
5.000 | beş yüz | 38 |
sentences |
Mevcut Değil | Mevcut Değil | 13361 |
Bir textSplitMode kullanımı, pages sonucunda çoğu öbeğin toplam karakter sayılarının maximumPageLength yakında olmasına yol açar. Öbek karakter sayısı, tümce sınırlarının öbek içinde yer aldığı farklara bağlı olarak değişir. Öbek belirteci uzunluğu, öbek içeriğindeki farklılıklara bağlı olarak değişir.
Parametrelerin en uygun seçimi, öbeklerin nasıl kullanıldığına bağlıdır. Çoğu uygulama için, karakter sayısı kullanılırken aşağıdaki varsayılan parametrelerle başlamanız önerilir:
textSplitMode |
maximumPageLength |
pageOverlapLength |
|---|---|---|
pages |
2000 | beş yüz |
LangChain veri öbekleme örneği
LangChain, belge yükleyicileri ve metin bölücüleri sağlar. Bu örnekte PDF yükleme, belirteç sayılarını alma ve metin bölücü ayarlama işlemleri gösterilmektedir. Belirteç sayılarını almak, öbek boyutlandırma konusunda bilinçli bir karar vermenizi sağlar.
Bu örnek için örnek bir not defteri azure-search-vector-samples deposunda bulunabilir.
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("./data/earth_at_night_508.pdf")
pages = loader.load()
print(len(pages))
Çıktı, PDF'de 200 belgeyi veya sayfayı gösterir.
Bu sayfaların tahmini belirteç sayısını almak için TikToken kullanın.
import tiktoken
tokenizer = tiktoken.get_encoding('cl100k_base')
def tiktoken_len(text):
tokens = tokenizer.encode(
text,
disallowed_special=()
)
return len(tokens)
tiktoken.encoding_for_model('gpt-4.1-mini')
# create the length function
token_counts = []
for page in pages:
token_counts.append(tiktoken_len(page.page_content))
min_token_count = min(token_counts)
avg_token_count = int(sum(token_counts) / len(token_counts))
max_token_count = max(token_counts)
# print token counts
print(f"Min: {min_token_count}")
print(f"Avg: {avg_token_count}")
print(f"Max: {max_token_count}")
Çıktı, hiçbir sayfanın sıfır belirteci olmadığını, sayfa başına ortalama belirteç uzunluğunun 189 belirteç olduğunu ve herhangi bir sayfanın en fazla belirteç sayısının 1.583 olduğunu gösterir.
Ortalama ve maksimum belirteç boyutunu bilmek, öbek boyutunu ayarlama hakkında içgörü sağlar. 500 karakter çakışması olan 2.000 karakterlik standart öneriyi kullanabilseniz de, bu durumda örnek belgenin belirteç sayıları göz önüne alındığında daha düşük bir sayıya inmek mantıklıdır. Aslında, çok büyük bir çakışma değeri ayarlamak hiç çakışma görünmemesine neden olabilir.
from langchain.text_splitter import RecursiveCharacterTextSplitter
# split documents into text and embeddings
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
length_function=len,
is_separator_regex=False
)
chunks = text_splitter.split_documents(pages)
print(chunks[20])
print(chunks[21])
Ardışık iki parçanın çıkışı, ilk parçanın metninin ikinci parçaya örtüştüğünü gösterir. Çıktı, okunabilirlik için basit bir şekilde düzenlenmiştir.
'x Earth at NightForeword\nNASA’s Earth at Night explores the brilliance of our planet when it is in darkness. \n It is a compilation of stories depicting the interactions between science and \nwonder, and I am pleased to share this visually stunning and captivating exploration of \nour home planet.\nFrom space, our Earth looks tranquil. The blue ethereal vastness of the oceans \nharmoniously shares the space with verdant green land—an undercurrent of gentle-ness and solitude. But spending time gazing at the images presented in this book, our home planet at night instantly reveals a different reality. Beautiful, filled with glow-ing communities, natural wonders, and striking illumination, our world is bustling with activity and life.**\nDarkness is not void of illumination. It is the contrast, the area between light and'** metadata={'source': './data/earth_at_night_508.pdf', 'page': 9}
'**Darkness is not void of illumination. It is the contrast, the area between light and **\ndark, that is often the most illustrative. Darkness reminds me of where I came from and where I am now—from a small town in the mountains, to the unique vantage point of the Nation’s capital. Darkness is where dreamers and learners of all ages peer into the universe and think of questions about themselves and their space in the cosmos. Light is where they work, where they gather, and take time together.\nNASA’s spacefaring satellites have compiled an unprecedented record of our \nEarth, and its luminescence in darkness, to captivate and spark curiosity. These missions see the contrast between dark and light through the lenses of scientific instruments. Our home planet is full of complex and dynamic cycles and processes. These soaring observers show us new ways to discern the nuances of light created by natural and human-made sources, such as auroras, wildfires, cities, phytoplankton, and volcanoes.' metadata={'source': './data/earth_at_night_508.pdf', 'page': 9}
Özel yetenek
Sabit boyutlu bir öbekleme ve ekleme oluşturma örneği, Azure OpenAI ekleme modellerini kullanarak hem öbek hem de vektör ekleme oluşturma işlemini gösterir. Bu örnek, öbekleme adımını sarmak için Power Skills deposundakibir Azure AI Search özel becerisini kullanır.